当前位置: 首页 > 科技观察

xeus-sql:让Jupyter支持SQL处理

时间:2023-03-20 22:34:37 科技观察

现在使用Jupyter进行数据处理对于数据工作者来说已经不是什么新鲜事了。然而,如何导入大量数据是一件棘手的事情。众所周知,关系型数据库是最重要的数据存储载体,因此对数据库的支持是Jupyter数据科学界的迫切需求。此前,Jupyter发布了一个内核xeus-sqlite,允许用户直接从笔记本中查询SQLite。日前,Jupyter发布了一个新项目xeus-sql,它是xeus-sqlite的扩展,是Jupyter通用的数据库访问工具。它可用于在大多数关系数据库上执行SQL查询。数据库支持xeus-sql支持市面上绝大部分的数据,包括:MySQLPostgreSQLSQLite3DB2OracleFirebird以及任何支持ODBC驱动的数据库。为了提供所有这些集成,xeus-sql依赖SOCI库作为项目的主干。SOCI将所有不同的数据库连接和查询细节抽象为一个统一的C++API。xeus-sql使用SOCI和xeus向Jupyter公开SQL功能。安装为确保安装正常进行,最好在全新的conda环境中安装xeus。xeus-sql也需要使用miniconda安装,完整的anaconda可能会产生冲突。最安全的用法是创建一个以xeus-sqlminiconda安装命名的环境:condacreate-nxeus-sqlcondaactivatexeus-sql从conda安装Condaforge提供了MySQL、PostgreSQL和SQLite的打包版本,可以使用conda或mamba轻松安装One-单击安装,使用conda包管理器安装xeus-sql:condainstallxeus-sqljupyterlab-cconda-forge或使用mamba:mambainstallxeus-sqljupyterlab-cconda-forge或者可以单独安装:mambainstallxeus-sqlsoci-mysql-cconda-forgemambainstallxeus-sqlsoci-postgresql-cconda-forgemambainstallxeus-sqlsoci-mysql-cconda-forge不同的SQL后端有一些区别,可以参考xeus-sql详细文档和例子学习。使用方法连接MySQ需要先安装xeus-sql和soci-mysql,然后使用LOAD加载连接数据库:%LOADmysqldb=dbnameuser=user1password='Password123#@!'上面的db数据库name,user是数据库连接用户名,password是用户密码。连接成功后,可以执行数据库命令和SQL语句,如:showdatabases;SELECT*FROMtestINSERTIINTOexampleVALUES(2,'Core')SELECT*FROMexampleINSERTIINTOexampleVALUES(3,'Table')和其他数据库后端类似:firebird:%LOADfirebirdservice=firebird.fdbuser=SYSDBApostgresql:%LOADpostgresqldbname=newdvdrental表格和查询结果的表格形式,Jupyter的丰富显示系统提供了选项,可以根据使用的应用程序将它们显示为丰富文本或纯文本显示。除了使用表格显示查询外,还可以直接在Notebook中根据查询结果轻松创建Vega-Lite图形:Vega-Lite是一个功能强大的库,可以使用xeus-sql文档从关系数据创建许多不同的可视化效果。为了支持此功能,xeus-sql依赖xvega(vega的C++后端)和自定义Jupytermagic来绘制通过xvega-bindings实用程序库实现的微语言。除了使用迷你语言,还可以直接提供可视化的JSON规范。综上所述,xeus-sql的推出让Jupyter如虎添翼,让数据工作者对数据的处理和可视化变得非常方便。同时,Jupyter可以作为传统dba和数据库用户的便捷数据库客户端。