JupyterLab中的SQL接口

Jupyter笔记本是任何数据科学工作流程中必不可少的组成部分, 以至于像Netflix这样的许多组织都认为它们是必不可少的。基于浏览器的计算环境以及可复制的文档格式使它们成为全球数百万数据科学家和研究人员的实际选择。 Jupyter拥有来自世界上几乎每个国家的强大国际社会。社区本身已经开发了许多内核。
Jupyter Lab是Jupyter项目的下一代用户界面, 它提供了经典Jupyter Notebook的所有熟悉的构建基块, 例如笔记本, 终端, 文本编辑器, 文件浏览器, 丰富的输出等。但是, 与经典笔记本不同, 所有这些功能在灵活而强大的用户界面中提供。 Jupyter实验室的基本思想是将经典笔记本中的所有构造块以及一些新内容都放在一个屋顶下。

JupyterLab中的SQL接口

文章图片
JupyterLab展示了其工作区域, 其中包括笔记本, 文本文件, 终端和笔记本输出, 它们都能够相互交互。
首先让我们在系统上安装并运行Jupyter Lab。
安装 JupyterLab可以使用conda, pip或pipenv安装。
conda install -c conda-forge jupyterlab or pip install jupyterlab or pipenv install jupyterlab pipenv shell

请查看官方安装文档以了解更多详细信息。
启动JupyterLab 你只需在控制台中键入以下内容即可启动Jupyter:
jupyter lab

JupyterLab将在浏览器中自动打开, 其界面类似于下面的界面。这意味着一切都准备就绪, 你一切顺利。
JupyterLab中的SQL接口

文章图片
主要工作区域是实际活动发生的地方。它由笔记本, 文档, 控制台, 终端等组成。只需双击或将文件拖到该区域即可开始工作。
与JupyterLab的SQL接口
JupyterLab中的SQL接口

文章图片
在大多数情况下, 我们使用的数据存储在称为数据库的文件中, 数据科学家的一项基本任务是能够访问数据库中的数据, 然后对其进行分析。因此, 在SQL数据库和Jupyter Notebook / Lab之间建立无缝接口是一个好主意, 以使访问和操作数据变得更加容易和高效。该接口可以通过两种可能的方式实现:
1.使用IPython SQL Magic扩展
魔术命令是Jupyter Notebook中的一组便捷功能, 旨在解决标准数据分析中的一些常见问题。你可以在%lsmagic的帮助下查看所有可用的魔术。
IPython SQL magic扩展使将SQL查询直接写入代码单元以及将结果直接读取到pandas DataFrames(源)成为可能。这适用于传统笔记本和现代Jupyter Labs。
在笔记本中安装SQL模块
!pip install ipython-sql

加载SQL模块
%load_ext sql

上面的magic命令加载了ipython-sql扩展。我们可以连接到SQLAlchemy支持的任何数据库。在这里, 我们将连接到SQLite数据库。在代码单元格中输入以下命令:
%sql sqlite://

【JupyterLab中的SQL接口】如果你将输出显示为” Connected:@None” , 则表明已建立连接。
  • 建立资料库
最后, 我们创建一个名为EMPLOYEES的演示表来展示该功能。
%%sql CREATE TABLE EMPLOYEE(firstname varchar(50), lastname varchar(50)); INSERT INTO EMPLOYEE VALUES('Tom', 'Mitchell'); INSERT INTO EMPLOYEE VALUES('Jack', 'Ryan');

现在, 我们可以在数据库上执行查询。
%sql SELECT * from EMPLOYEE; ---------------------------------- * sqlite:// Done.

上面的查询输出下表。
JupyterLab中的SQL接口

文章图片
  • 使用现有数据库
我们还可以使用magic函数连接到现有数据库。在本教程中, 我们将使用SQL_SAFI数据库(研究非洲农民主导的灌溉(SAFI)数据库)。 ” SAFI项目是一个研究项目, 旨在研究坦桑尼亚和莫桑比克的农民使用的农业和灌溉方法。该数据集由与家庭和农业有关的调查数据组成” (资料来源)。你可以在这里下载。
#Specifying the path of the database %sql sqlite:////Users/Parul/Desktop/SQL_SAFI.sqlite ----------------------------------------------------------- 'Connected: @/Users/Parul/Desktop/SQL_SAFI.sqlite'

上面的语句打开了名为SQL_SAFI.sqlite的数据库, 该数据库位于以下路径中:Users / Parul / Desktop。让我们选择” 作物” 表并显示其内容。
%sql select * from Crops

JupyterLab中的SQL接口

文章图片
显示作物表的前几行
%sql select * from Crops where D_curr_crop = "maize" AND ID < = 3;

JupyterLab中的SQL接口

文章图片
结果也可以转换为pandas数据框, 如下所示:
result = %sql select * from Crops where D_curr_crop = "maize" AND ID < = 3; dataframe = result.DataFrame()

JupyterLab中的SQL接口

文章图片
dataframe.info()

JupyterLab中的SQL接口

文章图片
2. jupyterlab-sql扩展
在继续之前, 我们先大致介绍一下Jupyter扩展。
JupyterLab扩展
扩展是Jupyter Lab最有用的功能之一, 可以增强Jupyter Lab的体验。 Jupyter Lab本质上是一个可扩展的环境, 它本身具有笔记本, 终端和编辑器, 全部作为扩展存在。
” JupyterLab扩展是npm软件包(Javascript开发中的标准软件包格式)” (源)。扩展通过提供几个有用的选项(例如新主题, 查看器, 键盘快捷键, 高级设置选项), 提供了一种自定义和增强JupyterLab体验的方法。 GitHub上有许多社区开发的扩展。你可以搜索GitHub主题jupyterlab-extension来找到扩展名。
要安装JupyterLab扩展, 你需要安装Node.js, 可以从其网站上进行安装, 也可以按照以下步骤进行安装。
conda install -c conda-forge nodejs or brew install node #for MacOS users

jupyterlab-sql扩展是一种有用的扩展, 它使你可以向Jupyter Lab添加SQL用户界面。这有两个主要优点:
  • 只需单击即可浏览SQL表。
  • 还可以使用自定义查询来修改和读取表。
你可以在Github官方存储库中了解更多信息。
安装 要安装jupyterlab-sql, 请按给定顺序运行以下命令:
pip install jupyterlab_sql jupyter serverextension enable jupyterlab_sql --py --sys-prefix jupyter lab build

然后, 你将需要重新启动所有正在运行的Jupyter服务器。
另外, 请务必注意jupyterlab-sql仅适用于Python 3.5及更高版本。
入门 重新启动Jupyter Lab后, 启动器中将出现一个新的SQL图标。
JupyterLab中的SQL接口

文章图片
这意味着, 所有内容均已正确安装, 并且你已准备好将实例连接到数据库。
连接 要连接到数据库, 你需要具有有效的数据库URL。 jupyterlab-sql已针对SQLite, PostgreSQL和MySQL数据库(源)进行了广泛的测试。遵循有关URL的SQLAlchemy指南。该URL必须是数据库URL, 例如:
postgres://localhost:5432/postgres postgres://username:password@localhost:5432/postgres mysql://localhost/employees sqlite:// sqlite:///myfile.db

让我们连接到我们先前使用的现有SQL_SAFI数据库。单击启动器中的SQL图标, 然后输入数据库URL。按Enter键进行连接。
JupyterLab中的SQL接口

文章图片
一旦数据库建立连接, 你就可以查看数据库中的所有表。
JupyterLab中的SQL接口

文章图片
JupyterLab中的SQL接口

文章图片
接下来, 我们还可以编写自定义SQL查询以从表中获取所需数据。
总结
结合使用SQL和JupterLab, 可以将数据分析提高到一个新的水平。使用jupyter-sql接口, 可以非常轻松地将SQL Server连接到Jupyter生态系统, 并将数据直接提取到其中, 而无需离开Jupyter接口。
如果你想了解有关SQL的更多信息, 请参加srcmini的SQL中的数据驱动决策。

    推荐阅读