看到一个插件ipython-sql , 可以在Jupyter中直接运行SQL语句. 测试了一下, 操作MySQL成功.
疑问
项目中我们主要使用Kylin. 能否用Jupyter
连接Kylin
?
思考
ipython-sql
文档中写到:
Connect to a database, using SQLAlchemy connect strings, then issue SQL commands within IPython or IPython Notebook.
ipython-sql
使用SQLAlchemy
连接数据库.
kylin
官网中介绍了一个python
驱动,kylinpy, 它支持sqlalchemy
.
官方给的例子:
$ python
>>> import sqlalchemy as sa
>>> kylin_engine = sa.create_engine('kylin://username:password@hostname:7070/learn_kylin?version=v1')
>>> results = kylin_engine.execute('SELECT count(*) FROM KYLIN_SALES')
>>> [e for e in results]
猜测
通过 kylinpy
+ipython-sql
可以实现在Jupyter
中查询Kylin
.
测试验证
首先, 安装 kylinpy
pip install --upgrade kylinpy
Jupyter
中:
- 加载SQL解析器. 连接
Kylin
%load_ext sql
%sql kylin://username:password@hostname:7070/learn_kylin
- 在cell 中执行
SQL
%%sql
select * from tab_x
执行报错: 语法错误.
通过抓包,发现 ipython-sql
会在语句后, 自动追加一条 commit
语句. kylin
不支持commit
, 所以报错!
最终方案
翻文档, 找到了禁用自动提交的方法. 修改成如下:
# 加载 SQL 解释器
%load_ext sql
# 禁用自动提交
%config SqlMagic.autocommit=false
# 连接kylin
%sql kylin://username:password@hostname:7070/learn_kylin
执行SQL
语句
%%sql
select * from tab_x
执行成功 !
思考
Jupyter
与zeppelin
相比. 画图功能有点繁琐, 不过页面响应速度比较快 :)
Jupyter
适合部署到生产环境合适吗?