我想覆盖在ipython笔记本中为某些单元格按下运行时会发生什么。
例如,我希望能够直接在单元格中编写SQL查询并定义一个处理它的函数。
似乎应该可以像ipython-notebook extensions那样执行此操作。有谁知道类似的扩展?从ipython直接执行此操作的简单方法是什么?
理想情况下,这将涉及定义自定义单元格类型,但我很乐意使用特殊标记将常用的python代码与自定义SQL查询单元格分开。
答案 0 :(得分:3)
我曾经有类似的愿望,我最终得到了以下解决方案:
from sqlalchemy import create_engine
import pandas as pd
from IPython.core.magic import register_cell_magic
from IPython import get_ipython
con = create_engine(DB_URL)
@register_cell_magic
def sql(line, cell):
cell = cell.format(**globals())
if line.strip() != '-':
res = pd.read_sql(cell, con)
if line.strip() != '': get_ipython().user_ns[line.strip()] = res
return res
else:
con.execute(cell)
del sql
您现在可以写入其他单元格:
%sql outputvar
select * from whatever where ...
例如: