peewee行级阻塞

wztqucjr  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(564)

我目前正在我的项目中使用peewee作为orm。在我目前的情况下,我有一些进程,每个进程都有一个数据库连接。所有这些进程都需要同时访问某个表。我在寻找一种不用中央控制器就能协调的方法。为此,当一个进程读取一行时,它必须被锁定,其他进程不能读取该行。被阻止的进程应继续处理其他未被阻止的行。
我四处搜索,发现mysql已经有了一个内部锁定机制,如这里所述,显然它必须在索引列上使用,才能像预期的那样工作(从这里开始)。但我在peewee的文件里找不到任何相关的东西。有没有提供这些功能的扩展?或者我应该编写包含 FOR Update 条款?

j13ufse2

j13ufse21#

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.

相关问题