Peewee - Database 数据库类

Peewee 包中的 Database 数据库类对象代表与数据库的连接。 Peewee 通过 Database 数据库类的相应子类为 SQLite、PostgreSQL 和 MySQL 数据库提供开箱即用的支持。

数据库类实例拥有与数据库引擎建立连接所需的所有信息,用于执行查询、管理事务等。

数据库类有SqliteDatabasePostgresqlDatabaseMySQLDatabase 子类。虽然 SQLite 的 DB-API 驱动程序以 sqlite3 模块的形式包含在 Python 的标准库中,但必须首先安装 psycopg2pymysql 模块才能将 PostgreSql 和 MySQL 数据库与 Peewee 一起使用。


使用 SQLite 数据库

Python 以 sqlite3 模块的形式内置了对 SQLite 数据库的支持。 因此,连接非常容易。 Peewee 中 SqliteDatabase 类的对象表示连接对象。

con=SqliteDatabase(name, pragmas, timeout)

这里,pragma是SQLite扩展,用于修改SQLite库的操作。 此参数是一个字典或一个二元组列表,其中包含每次打开连接时要设置的 pragma 键和值。

Timeout 参数以秒为单位指定,以设置 SQLite 驱动程序的繁忙超时。 这两个参数都是可选的。

以下语句创建与新 SQLite 数据库的连接(如果它不存在)。

>>> db = peewee.SqliteDatabase('mydatabase.db')

Pragma 参数通常是为新的数据库连接给出的。 pragmase 字典中提到的典型属性有journal_modecache_sizelocking_modeforeign-keys等。

>>> db = peewee.SqliteDatabase(
   'test.db', pragmas={'journal_mode': 'wal', 'cache_size': 10000,'foreign_keys': 1}
)

以下 pragma 设置非常适合指定 −

Pragma 属性 推荐值 含义
journal_mode wal 允许读和写共存
cache_size -1 * data_size_kb 以 KiB 为单位设置页面缓存大小
foreign_keys 1 强制外键约束
ignore_check_constraints 0 强制检查约束
Synchronous 0 让操作系统处理同步

Peewee 还有另一个 Python SQLite Wrapper (apsw),一个高级的 sqlite 驱动程序。 它提供高级功能,例如虚拟表和文件系统以及共享连接。 APSW 比标准库 sqlite3 模块更快。