3.0 版的變更

此文件描述從 2.x 版本轉換到 3.x 版本時需要注意的變更。

不向下相容的變更

我盡可能保持變更的向下相容性。在某些情況下,已變更的 API 會觸發 DeprecationWarning

資料庫

模型 Meta 選項

  • db_table 已變更為 table_name

  • db_table_func 已變更為 table_function

  • order_by 已移除 (用於指定套用到 SELECT 查詢的預設排序)。

  • validate_backrefs 已移除。不再驗證反向參考。

模型

  • BaseModel 已重新命名為 ModelBase

  • 存取原始模型資料現在使用 __data__ 而不是 _data

  • _prepare_instance() 模型方法已移除。

  • 輸出 DDL 陳述式以產生模型及其關聯索引的 sqlall() 方法已移除。

欄位

  • db_column 已變更為 column_name

  • db_field 類別屬性已變更為 field_type (如果您要實作自訂欄位子類別,則會用到此屬性)

  • model_class 屬性已變更為 model

  • PrimaryKeyField 已重新命名為 AutoField

  • ForeignKeyField 建構子有以下變更

    • rel_model 已變更為 model

    • to_field 已變更為 field

    • related_name 已變更為 backref

  • ManyToManyField 現在包含在主要的 peewee.py 模組中

  • 移除了擴充欄位 PasswordFieldPickledFieldAESEncryptedField

查詢

JOIN_INNERJOIN_LEFT_OUTER 等現在為 JOIN.INNERJOIN.LEFT_OUTER 等。

包含查詢結果包裝器實作的 C 擴充已移除。

此外,Select.aggregate_rows() 已移除。此輔助函式用於取消重複左聯結查詢,以在迭代模型及其關係時給人有效率的感覺。實際上,程式碼的複雜性及其有限的實用性使我決定將其廢除。您可以改用 prefetch() 來達到相同的結果。

  • Select 查詢屬性 _select 已變更為 _returning

  • naive() 方法現在為 objects(),預設使用模型類別作為建構子,但也接受任何可呼叫的函式作為替代建構子。

  • 不再支援 annotate() 查詢方法。

Case() 輔助函式已從 playhouse.shortcuts 模組移至主要的 peewee 模組。

cast() 方法不再是函式,而是所有類似欄位物件的方法。

InsertQuery.return_id_list() 方法已由更通用的模式取代,即使用 _WriteQuery.returning()

InsertQuery.upsert() 方法已由更通用和靈活的 Insert.on_conflict() 方法取代。

使用 prefetch() 時,收集的實例會儲存在與外鍵的 backref 相同的屬性中。之前,您會使用 (backref)_prefetch 來存取聯結的實例。

用於建立可組合 SQL 字串的 SQL 物件現在預期第二個參數為參數的清單/元組。

移除的擴充功能

以下擴充功能不再包含在 playhouse

  • berkeleydb

  • csv_utils

  • djpeewee

  • gfk

  • kv

  • pskel

  • read_slave

SQLite 擴充功能

SQLite 擴充模組的 VirtualModel 類別接受稍微不同的 Meta 選項

  • arguments - 用於指定在虛擬表格上定義的任何列之後附加的任意引數。應為字串列表。

  • extension_module (未變更)

  • options (取代 extension_options) - 虛擬表格的任意選項,出現在列和 arguments 之後。

  • prefix_arguments - 一個字串列表,應出現在虛擬表格宣告中的任何引數或列之前。

因此,當宣告虛擬表格的模型時,它的建構方式大致如下

CREATE VIRTUAL TABLE "table name" USING extension_module (
    prefix arguments,
    field definitions,
    arguments,
    options)

Postgresql 擴充功能

PostgresqlExtDatabase 不再預設註冊 hstore 擴充功能。若要在 3.0 及更新版本中使用 hstore 擴充功能,請在初始化資料庫物件時傳遞 register_hstore=True

訊號擴充功能

post_init 訊號已被移除。

新功能

查詢建構器已從頭開始重寫,使其更具彈性和強大功能。現在有一個通用的 底層 API 可用於建構查詢。

SQLite

許多 SQLite 特有的功能已從 playhouse.sqlite_ext 模組移至 peewee,例如

  • 使用者定義函數、聚合、校對和表格函數。

  • 載入擴充功能。

  • 指定 pragmas。

請參閱「使用 SQLite」章節「SQLite 擴充功能」文件,以取得更多詳細資訊。

SQLite 擴充功能

來自 sqlite-vtfunc 的虛擬表格實作已摺疊到 peewee 程式碼庫中。

  • 支援 SQLite 線上備份 API。

  • Murmurhash 實作已修正。

  • 已解決 BM25 排名程式碼中的幾個小問題。

  • 現在包含許多用於雜湊和排名使用者定義的函數。

  • BloomFilter 實作。

  • 增量式 Blob I/O 支援。

  • 支援更新、提交和回滾 hook。

  • LSMTable 實作以支援 lsm1 擴充功能。