Coursera 笔记

Module 04 · Accessing Databases using Python

Accessing Databases with SQL Magic使用 SQL Magic 访问数据库

Coursera ↗

您好,欢迎观看本视频,您将学习:

  • 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 数据库为例:

  1. 连接数据库: 假设连接到名为 HR.db 的 SQLite3 数据库。
  2. 建立 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 中?