SQLAlchemy 2.0 建立连接-引擎


前言

初衷:在学习的时候发现 SQLAlchemy 官方文档缺中文版,翻阅英文文档效率低,萌生翻译想法。
本系列旨在原汁原味的翻译 SQLAlchemy 2.0 官方文档,帮助英语不好的小伙伴快速学习使用方法。
如果觉得翻译不错,欢迎在文章底部请作者喝杯奶茶,您的鼓励就是俺最大的动力!😄

建立连接-引擎

欢迎 ORM 和 Core 的忠实读者!
每个连接到数据库的 SQLAlchemy 应用都需要使用一个引擎(Engine)。这一点适用于所有情况。

任何 SQLAlchemy 应用程序的开始都是一个被称作引擎(Engine)的对象。
这个对象扮演着对指定数据库进行连接的中央信息库,既提供了一个中转,又提供了一个称为连接池来保存这些数据库连接。
引擎通常是一个全局对象,为特定的数据库服务器只创建一次,并通过一个 URL 字符串进行配置,该字符串描述了如何连接到数据库主机或后端。

在本教程中,我们将使用一个仅在内存中运行的 SQLite 数据库。这是一种方便的方式,可以在无需提前设置真实的数据库的情况下进行测试。这里我们通过使用 create_engine() 函数来创建数据库引擎

from sqlalchemy import create_engine
engine = create_engine("sqlite+pysqlite:///:memory:", echo=True)

create_engine 的主要参数是一个字符串类型的 URL,例如上面的 sqlite+pysqlite:///:memory: 。这暗示着引擎(Engine)三个重要的事实:

  1. 我们正在与哪种数据库进行连接?如上的 sqlite 部分,它在 SQLAlchemy 中链接到一个称为SQL 方言的对象。

  2. 我们使用的是哪个数据库接口(DBAPI)?Python DBAPI 是一个第三方驱动程序,SQLAlchemy 可以使用它与特定数据库进行交互。如上示例中,我们使用是 pysqlite,在现代 Python 中,它是 SQLite 的 sqlite3标准库接口。如果不进行设置,SQLAlchemy 将使用所选数据库的默认 DBAPI

  3. 我们如何定位到数据库?如上示例中,我们的 URL 包含 /:memory:,这表明我们将使用一个仅在内存中运行的数据库。这种数据库非常适合实验,因为它不需要任何服务器,也不需要创建新文件。

懒加载连接(Lazy Connecting)
在调用 create_engine() 创建一个数据库引擎时,它并不会立即尝试连接到数据库;真正的连接只会在第一次执行与数据库相关的操作时发生。这种设计模式被称为 “懒初始化”
简单来说,就是在需要的时候才去连接数据库,而不是一开始就连接。这样可以提高效率和性能。

我们还指定了一个参数 create_engine.echo,它会指示引擎将发出的所有 SQL 语句记录到 Python 日志中,并输出到标准输出。这个选项是一种更简便的方式,用于在脚本中快速设置 Python 日志,特别适合在实验时使用。许多 SQL 示例下方会有一个 [SQL] 链接,当我们点击则会显示完整的 SQL 交互信息。

SQLAlchemy 1.4 / 2.0 Tutorial
下一节课程: 事务和数据库 API