Module 04 · Accessing Databases using Python
Accessing Databases with SQL Magic使用 SQL Magic 访问数据库
您好,欢迎观看本视频,您将学习:
- Magic Statements 是什么。
- 行 Magic 和单元 Magic 之间的区别。
- 一些常用的 Magic Statements。
- 如何在 Jupyter Notebooks 中使用 SQL Magic 访问数据库。
一、Jupyter Notebook 中的 Magic Statements
Magic 命令或Magic 函数是 Jupyter Notebooks 中提供特殊功能的特殊命令。
- 特点: 它们不是有效的 Python 代码,但会影响 Notebook 的行为。它们旨在解决标准数据分析中的各种常见问题。
Magic Statements 的类型
Jupyter Notebook 中有两种类型的 Magic Statements:行 Magic (Line Magics) 和单元 Magic (Cell Magics)。
| 类型 | 前缀 | 作用范围 | 描述 |
|---|---|---|---|
| 行 Magic | % (一个百分号) |
一行输入 | 类似于终端 Shell 中的命令行调用,对单行输入进行操作。 |
| 单元 Magic | %% (两个百分号) |
多行输入 | 对整个单元进行操作,甚至可以转换整个单元或以不同的编程语言执行该单元。 |
二、常用 Magic Statements 示例
常用的行 Magic 示例 (%)
| 命令 | 描述 |
|---|---|
%pwd |
打印当前工作目录。 |
%ls |
列出当前目录中的所有文件。 |
%history |
显示命令历史记录。 |
%reset |
通过移除用户定义的所有名称来重置命名空间。 |
%who |
列出命名空间中的所有变量。 |
%whos |
提供命名空间中所有变量的更详细信息。 |
%matplotlib inline |
使 Matplotlib 绘图显示在 Notebook 内部。 |
%timeit |
测量单个语句的执行时间。 |
📌 注意: 您可以使用
%lsmagic命令获取所有可用行 Magic 的列表。

- 单单元格中多次使用行 Magic: 您可以在一个 Jupyter Notebook 单元格中使用多个行 Magic,但每个行 Magic 都必须单独占一行。
- 示例:
Python
这将先打印当前工作目录,然后列出当前目录中的所有文件。%pwd %ls
- 示例:
单元 Magic 示例 (%%)
某些行 Magic 语句也可以用作单元 Magic 语句,从而改变其作用方式:
%timeit** vs%%timeit:**%timeit: 测量单个语句的执行时间。%%timeit: 测量整个单元格的执行时间。
%%writefile: 单元 Magic 在此场景中具有独特优势。- 示例:
%%writefile myfile.txt会将整个单元格的内容写入myfile.txt文件中。
- 示例:

运行其他语言代码的单元 Magic
单元 Magic 不仅限于 Python,它们还允许您运行其他语言的代码:

| 单元 Magic | 描述 | 示例效果 |
|---|---|---|
%%HTML |
允许您在单元格中编写 HTML 代码,并相应地进行渲染。 | HTML 代码的使用将文本“Hello World”显示为标题。 |
%%Javascript** 或 **%%JS |
允许您在单元格中编写 Javascript 代码。 | Javascript 代码的使用会生成一个带有“Hello World”消息的网页弹窗。 |
%%bash |
允许您编写 Bash 命令。 | Bash 脚本语句 echo 的使用将生成文本“Hello world”,就像在终端中接收到的一样。 |
三、使用 SQL Magic 访问数据库
在使用 SQL Magic 之前,您需要安装和加载一些依赖项。
1. 安装依赖项
在 Notebook 的代码单元格中运行以下命令安装 ipython-sql 库,该库支持 SQL Magic:
Bash
!pip install ipython-sql
2. 加载 SQL 扩展
要使用 SQL Magic,您需要使用以下命令加载 SQL 扩展:
Python
%load_ext sql
3. 建立连接
在运行查询之前,您需要建立 SQL 服务器和 Notebook 的 SQL Magic 模块之间的连接。
以 SQLite3 数据库为例:
- 连接数据库: 假设连接到名为
HR.db的 SQLite3 数据库。 - 建立 SQL Magic 连接: 使用以下语句为 SQL Magic 模块建立到 SQL 服务器的连接:
Python
%sql sqlite:///HR.db
4. 执行 SQL 查询
建立连接后,您可以使用 %sql(行 Magic)或 %%sql(单元 Magic)来执行任何类型的查询:
- 行 Magic 示例 (
%sql): 用于执行单行 SQL 查询。
Python%sql SELECT * FROM employee; - 单元 Magic 示例 (
%%sql): 用于执行多行 SQL 查询。
Python%%sql SELECT Employee_ID, Last_Name FROM employee WHERE Salary > 50000;

总结
现在您可以:
- 描述 Magic Statements。
- 区分行 Magic (
%) 和单元 Magic (%%)。 - 讨论一些常用的 Magic Statements。
- 解释如何在 Jupyter Notebooks 中使用 SQL Magic 访问数据库。
您是否有兴趣了解如何使用 SQL Magic 将查询结果存储到 Python Pandas DataFrame 中?