我正在尝试使用peewee库更新表中的许多记录。内部 for
循环,我获取一个记录,然后更新它,但是这听起来很糟糕,所以我需要批量更新。当前代码如下所示:
usernames_to_update = get_target_usernames()
for username in usernames_to_update:
user = User.get(User.username == username) # username is primary key
if user.type == 'type_1':
user.some_attr_1 = some_value_1
elif user.type == 'type_2':
user.some_attr_2 = some_value_2
# elif ....
user.save()
在文件中,有 insert_many
功能,但不是 update_many
. 我四处寻找,想出了以下解决办法:
使用执行原始查询 CASE
:链接
使用 replace_many
:链接
使用 update
:链接
但是我找不到任何关于如何使用第二或第三种解决方案的例子。有人能解释一下案例2和案例3的用法吗?
2条答案
按热度按时间dffbzjpn1#
新的最佳答案是使用
bulk_update()
此处找到的方法:2jcobegt2#
需要.update()方法:
编辑:所以您希望在更新期间有条件地设置值。你可以用
Case
帮手。未经测试:文档可在此处找到:http://docs.peewee-orm.com/en/latest/peewee/api.html#case