gpt4 book ai didi

mysql - Peewee 行级阻塞

转载 作者:行者123 更新时间:2023-11-29 05:52:36 26 4
gpt4 key购买 nike

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

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

最佳答案

Peewee 支持使用 FOR UPDATE 子句,我认为这可能是您想要的。它不会阻止其他客户端读取,但只要持有锁的事务处于打开状态,它就会阻止修改。

例如:

with db.atomic():
# lock note.
note = Note.select().where(Note.id == 123).for_update().get()
# As long as lock is held no other client can modify note.

关于mysql - Peewee 行级阻塞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52765716/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com