小编Off*_*fue的帖子

使用 Peewee 库批量更新

我正在尝试使用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()
Run Code Online (Sandbox Code Playgroud)

文档中,有insert_many功能,但没有类似的东西update_many。搜索周围我想出了这些解决方案:

  1. 使用以下命令执行原始查询CASE链接
  2. 使用replace_many链接
  3. 使用update链接

但我找不到任何如何使用第二个或第三个解决方案的示例。有人可以澄清如何使用案例 2 和 3 吗?

python mysql sql-update peewee

6
推荐指数
2
解决办法
5426
查看次数

Peewee 行级阻塞

我目前在我的项目中使用Peewee作为 ORM。在我目前的情况下,我有一些进程,每个进程都有一个数据库连接。所有这些进程都需要同时访问某个表。我正在寻找某种方法来使它们在不使用中央控制器的情况下进行协调。为此,当一个进程读取一行时,它必须被锁定并且没有其他进程可以读取该行。阻塞的进程应该继续处理其他非阻塞的行。

我四处搜索,发现 MySql 已经有一个内部锁定机制,在此处描述,显然它必须在索引列上使用才能按预期运行(来自此处)。但是我在 peewee 文档中找不到任何相关内容。是否有任何扩展提供这些功能?或者我应该编写包含FOR Update子句的原始 SQL 查询?

mysql locking peewee

4
推荐指数
1
解决办法
947
查看次数

标签 统计

mysql ×2

peewee ×2

locking ×1

python ×1

sql-update ×1