看到一個插件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
適合部署到生產環境合適嗎?