使用 peewee FlaskDb 批量更新记录

Bulk updating records with peewee FlaskDb

我想使用 Peewee FlaskDb(位于 App Factory 中)一次更新数百(甚至数千)条记录。

参考 Peewee 文档,我 bulk_update 运行良好(与其他方法相比它非常快),但在使用批处理时失败。

例如,Ticket.bulk_update(selected_tickets, fields=[Ticket.customer])效果很好,但是当我使用以下代码批量更新时,我收到以下错误。

代码

    with db.atomic():
        Ticket.bulk_update(selected_tickets, fields=[Ticket.customer], batch=50)

错误

    AttributeError: 'FlaskDB' object has no attribute 'atomic'

使用 FlaskDB 批量更新记录的推荐方法是什么? FlaskDB 是否支持原子?

您正在尝试访问 FlaskDB 包装器 class 上的 peewee.Database 方法。那些方法不存在,需要参考Peewee底层数据库:

# Here we assume db is a FlaskDB() instance:
peewee_db = db.database

with peewee_db.atomic():
    ...