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_kwargsattribute has been renamed toconnect_params自定义字段类型定义的初始化参数已从更改为
fields到field_types.
模型元选项
db_tablehas changed totable_namedb_table_funchas changed totable_functionorder_by已删除(用于指定要应用于选择查询的默认顺序)。validate_backrefs已删除。反向引用不再有效。
模型
BaseModelhas been renamed toModelBase访问原始模型数据现在使用
__data__而不是_data这个
_prepare_instance()模型方法已删除。这个
sqlall()方法已被移除,该方法输出DDL语句以生成模型及其关联索引。
领域
db_columnhas changed tocolumn_namedb_field类属性更改为field_type(在实现自定义字段子类时使用)model_classattribute has changed tomodelPrimaryKeyFieldhas been renamed toAutoFieldForeignKeyField构造函数有以下更改:rel_modelhas changed tomodelto_fieldhas changed tofieldrelated_namehas changed tobackref
ManyToManyField现在包含在主目录中peewee.py模块已删除扩展字段
PasswordField,PickledField和AESEncryptedField.
查询
JOIN_INNER , JOIN_LEFT_OUTER 等现在 JOIN.INNER , JOIN.LEFT_OUTER 等。
已删除包含查询结果包装器实现的C扩展。
此外, Select.aggregate_rows() 已删除。这个助手被用来消除左连接查询的重复,以在迭代模型及其关系时提供效率的外观。在实践中,代码的复杂性及其有限的实用性说服了我放弃它。你可以用 prefetch() 达到同样的效果。
Selectquery attribute_selecthas 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 :
berkeleydbcsv_utilsdjpeeweegfkkvpskelread_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代码库中。