在ipython笔记本中读取单元格内容

在ipython笔记本中读取单元格内容,第1张

在ipython笔记本中读取单元格内容

我认为您正在尝试以错误的方式解决问题。

首先是的,有可能以一种真正骇人听闻的方式获得相邻的markdown单元,这在无头笔记本执行中是行不通的。

您要执行的 *** 作是使用IPython单元魔术,该魔术允许任意语法,只要该单元以2个百分号开头,后跟一个标识符即可。

通常,您需要SQL单元格。

您可以参考有关细胞魔术的文档,
或者我可以向您展示如何构建它:

from IPython.core.magic import  (    Magics, magics_class, cell_magic, line_magic)@magics_classclass StoreSQL(Magics):    def __init__(self, shell=None,  **kwargs):        super().__init__(shell=shell, **kwargs)        self._store = []        # inject our store in user availlable namespace under __mystore        # name        shell.user_ns['__mystore'] = self._store    @cell_magic    def sql(self, line, cell):        """store the cell in the store"""        self._store.append(cell)    @line_magic    def showsql(self, line):        """show all recorded statements"""        print(self._store)    ## use ipython load_ext mechanisme here if distributed    get_ipython().register_magics(StoreSQL)

现在,您可以在python单元格中使用SQL语法:

%%sql select * from foo Where QUX Bar

第二个单元格:

%%sqlInsert Cheezburger into Can_I_HAZ

检查我们执行了什么(3个破折号显示了输入/输出定界,您不必键入它们):

%showsql---['select * from foo Where QUX Bar', 'Insert Cheezburger into Can_I_HAZ']

在问题开始时您问了什么:

 mysql.query(__mystore[-1])

当然,这确实需要您以正确的顺序执行先前的单元格,没有什么阻止您使用

%%sql
语法来命名您的单元格,例如,如果
_store
dict
或更好的是您覆盖的类,则
__getattr__
类似于
__getitem__
使用点语法访问字段。这留给读者练习,或者最终看一下答案:

@cell_magicdef sql(self, line, cell):    """store the cell in the store"""    self._store[line.strip()] = cell

然后您可以使用像

%%sql A1set foo TO Bar where ID=9

然后在您的Python单元中

mysql.execute(__mystore.A1)

我也强烈建议看着凯瑟琳Develin
SqlMagic为IPython的,这笔记本要点在GitHub上,实况表演这一切事情。

在您似乎要说的评论中

pig
,没有什么可以阻止您拥有
%%pig
魔力的。也可以注入Javascript以启用SQL和PIG的正确语法高亮显示,但这超出了此问题的范围。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5673574.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存