xeus-sql:讓Jupyter支持SQL處理
現(xiàn)在用Jupyter進(jìn)行數(shù)據(jù)處理,對數(shù)據(jù)工作者來說已經(jīng)不是一個新鮮事情了。然而如何將大量數(shù)據(jù)導(dǎo)入?yún)s是一個比較棘手的事情。大家都知道關(guān)系數(shù)據(jù)庫是數(shù)據(jù)存儲的最重要的載體,那么對數(shù)據(jù)庫的支持是Jupyter數(shù)據(jù)科學(xué)界一個迫切的需求。
此前Jupyter曾發(fā)布過一個內(nèi)核xeus-sqlite允許用戶直接從notebook進(jìn)行SQLite查詢。日前Jupyter新發(fā)布了一個新的項目xeus-sql,這是對xeus-sqlite的擴展,是Jupyter的通用數(shù)據(jù)庫訪問工具,使用它可以在絕大多數(shù)的關(guān)系數(shù)據(jù)庫上進(jìn)行SQL查詢。
數(shù)據(jù)庫支持
xeus-sql支持市面上的絕大多數(shù)數(shù)據(jù),包括:
- MySQL
- PostgreSQL的
- SQLite3
- DB2
- Oracle
- Firebird
以及支持ODBC驅(qū)動程序的任何數(shù)據(jù)庫。
為了提供所有這些集成,xeus-sql依賴SOCI庫作為項目的主干。SOCI在統(tǒng)一的C++ API之后抽象所有不同的數(shù)據(jù)庫連接和查詢詳細(xì)信息。xeus-sql使用SOCI和xeus將SQL功能公開給Jupyter。
安裝
為確保安裝正常進(jìn)行,最好xeus在一個全新的conda環(huán)境中安裝。xeus-sql還需要使用miniconda安裝,完整的anaconda 可能會產(chǎn)生沖突。最安全的用法是創(chuàng)建一個以xeus-sqlminiconda安裝命名的環(huán)境:
- conda create -n xeus-sql
- conda activate xeus-sql
從conda安裝
Conda forge提供了MySQL,PostgreSQL和SQLite的打包版本,可以使用conda或mamba輕松安裝它們一鍵安裝,使用conda軟件包管理器安裝xeus-sql:
- conda install xeus-sql jupyterlab -c conda-forge
或者使用mamba:
- mamba install xeus-sql jupyterlab -c conda-forge
或者可以分別安裝:
- mamba install xeus-sql soci-mysql -c conda-forge
- mamba install xeus-sql soci-postgresql -c conda-forge
- mamba install xeus-sql soci-mysql -c conda-forge
不同的SQL后端之間存在一些差異,可以參考xeus-sql詳細(xì)文檔和示例學(xué)習(xí)。
使用方法
要連接MySQ,需要首先安裝xeus-sql和soci-mysql,然后用LOAD加載連接數(shù)據(jù)庫:
- %LOAD mysql db=dbname user=user1 password='Password123#@!'
上面db數(shù)據(jù)庫名稱,user為連庫用戶名,password為用戶密碼。
連接成功就可以執(zhí)行數(shù)據(jù)庫命令和SQL語句,比如:
- show databases;
- SELECT * FROM test
- INSERT INTO example VALUES (2, 'Core')
- SELECT * FROM example
- INSERT INTO example VALUES (3, 'Table')
其他數(shù)據(jù)庫后端也類似:
firebird:
- %LOAD firebird service=firebird.fdb user=SYSDBA
postgresql:
- %LOAD postgresql dbname=newdvdrental
可視化查詢
對于熟悉可視化SQL表和查詢結(jié)果的表形式的用戶,Jupyter的豐富顯示系統(tǒng)提供了根據(jù)使用的應(yīng)用程序?qū)⑺鼈冿@示為豐富文本顯示還是純文本顯示的選項。
除了顯示帶有表的查詢之外,在還可以直接在Notebook中根據(jù)查詢結(jié)果輕松創(chuàng)建Vega-Lite圖形:
Vega-Lite是一個功能強大的庫可以使用xeus-sql從關(guān)系數(shù)據(jù)中創(chuàng)建許多不同的可視化文件。
為了支持此功能,xeus-sql依賴于xvega(vega的C++后端)和定制的Jupyter魔術(shù)來繪制通過xvega-bindings實用程序庫中實現(xiàn)的微型語言。除了使用迷你語言之外,還可以直接提供可視化的JSON規(guī)范。
總結(jié)
xeus-sql的推出,讓Jupyter如虎添翼,可以非常方便數(shù)據(jù)工作者進(jìn)行數(shù)據(jù)處理和可視化。同時對于傳統(tǒng)dba和數(shù)據(jù)庫用戶可以使用Jupyter作為一個便捷的數(shù)據(jù)庫客戶端。