3的变化
本文档描述了从2.x切换到3.x时需要注意的更改。
向后不兼容
我尽量使更改向后兼容。在某些地方,已更改的API将触发 DeprecationWarning
.
数据库
get_conn()
has changed toDatabase.connection()
get_cursor()
has changed toDatabase.cursor()
execution_context()
替换为只使用数据库实例作为上下文管理器。对于连接上下文 without 交易,使用
Database.connection_context()
.Database.create_tables()
和Database.drop_tables()
以及Model.create_table()
和Model.drop_table()
全部默认为safe=True
(create_table
如果不存在将创建,drop_table
如果存在,将丢弃)。connect_kwargs
attribute has been renamed toconnect_params
自定义字段类型定义的初始化参数已从更改为
fields
到field_types
.
模型元选项
db_table
has changed totable_name
db_table_func
has changed totable_function
order_by
已删除(用于指定要应用于选择查询的默认顺序)。validate_backrefs
已删除。反向引用不再有效。
模型
BaseModel
has been renamed toModelBase
访问原始模型数据现在使用
__data__
而不是_data
这个
_prepare_instance()
模型方法已删除。这个
sqlall()
方法已被移除,该方法输出DDL语句以生成模型及其关联索引。
领域
db_column
has changed tocolumn_name
db_field
类属性更改为field_type
(在实现自定义字段子类时使用)model_class
attribute has changed tomodel
PrimaryKeyField
has been renamed toAutoField
ForeignKeyField
构造函数有以下更改:rel_model
has changed tomodel
to_field
has changed tofield
related_name
has changed tobackref
ManyToManyField
现在包含在主目录中peewee.py
模块已删除扩展字段
PasswordField
,PickledField
和AESEncryptedField
.
查询
JOIN_INNER
, JOIN_LEFT_OUTER
等现在 JOIN.INNER
, JOIN.LEFT_OUTER
等。
已删除包含查询结果包装器实现的C扩展。
此外, Select.aggregate_rows()
已删除。这个助手被用来消除左连接查询的重复,以在迭代模型及其关系时提供效率的外观。在实践中,代码的复杂性及其有限的实用性说服了我放弃它。你可以用 prefetch()
达到同样的效果。
Select
query attribute_select
has changed to_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 默认情况下的扩展。使用 hstore 3.0及以后的扩展,通过 register_hstore=True 初始化数据库对象时。
信号扩展
这个 post_init
信号已被删除。
新材料
查询生成器已经从一开始就被重新编写,以便更加灵活和强大。现在有一个通用的, lower-level API 用于构造查询。
SQLite
许多特定于sqlite的功能已从 playhouse.sqlite_ext
模块化为 peewee
,例如:
用户定义的函数、聚合、排序和表函数。
正在加载扩展。
指定pragma。
见 "Using SQLite" section 和 "SQLite extensions" 有关详细信息,请参阅文档。
sqlite扩展
来自的虚拟表实现 sqlite-vtfunc 已折叠到Peewee代码库中。