3.0 版的變更
此文件描述從 2.x 版本轉換到 3.x 版本時需要注意的變更。
不向下相容的變更
我盡可能保持變更的向下相容性。在某些情況下,已變更的 API 會觸發 DeprecationWarning
。
資料庫
get_conn()
已變更為Database.connection()
get_cursor()
已變更為Database.cursor()
execution_context()
已被簡單地將資料庫實例用作上下文管理器所取代。對於沒有事務的連接上下文,請使用
Database.connection_context()
。Database.create_tables()
和Database.drop_tables()
,以及Model.create_table()
和Model.drop_table()
,預設值都為safe=True
(create_table
會在不存在時建立,drop_table
會在存在時刪除)。connect_kwargs
屬性已重新命名為connect_params
自訂欄位類型定義的初始化參數已從
fields
變更為field_types
。
模型 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
模組中移除了擴充欄位
PasswordField
、PickledField
和AESEncryptedField
。
查詢
JOIN_INNER
、JOIN_LEFT_OUTER
等現在為 JOIN.INNER
、JOIN.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 程式碼庫中。