Peewee - 数据库类



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

Database 类实例包含打开与数据库引擎连接所需的所有信息,并用于执行查询、管理事务以及执行表、列等的内省。

Database 类具有 **SqliteDatabase**、**PostgresqlDatabase** 和 **MySQLDatabase** 子类。虽然 Python 标准库中包含 sqlite3 模块形式的 SQLite DB-API 驱动程序,但要使用 Peewee 使用 PostgreSql 和 MySQL 数据库,必须首先安装 **psycopg2** 和 **pymysql** 模块。

使用 Sqlite 数据库

Python 通过 sqlite3 模块内置支持 SQLite 数据库。因此,连接非常容易。Peewee 中 SqliteDatabase 类的对象代表连接对象。

con=SqliteDatabase(name, pragmas, timeout)

这里,**pragma** 是 SQLite 扩展,用于修改 SQLite 库的操作。此参数可以是字典或包含 pragma 键和值的 2 元组列表,每次打开连接时都会设置。

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

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

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

Pragma 参数通常用于新的数据库连接。pragma 字典中提到的典型属性是 **journal_mode**、**cache_size**、**locking_mode**、**foreign-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 强制执行 CHECK 约束
Synchronous 0 让操作系统处理 fsync

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

广告