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 模組更快。

廣告
© . All rights reserved.