在使用sqlalchemy查询时用到了 with_lockmode('update') 结构,
其sql为:
FOR UPDATE
模式除了update,还有 read:
LOCK IN SHARE MODE
lock in share mode 就是共享锁
如果事务对某行数据加上共享锁之后,可进行读写操作;其他事务可以对该数据加共享锁,但不能加排他锁,且只能读数据,不能修改数据。 某个事物想进行修改数据操作,那他必须等其他事物的共享锁都释放完毕才能进行修改操作
for update 排他锁,就是行锁
如果事务对数据加上排他锁之后,则其他事务不能对该数据加任何的锁。获取排他锁的事务既能读取数据,也能修改数据,其他事务只能查询,不能修改。
和 update_nowait:
在select的结果集中,只要有任何一个记录在加锁,则抛出资源正忙的异常。
补充:
如何在sqlyog打开非自动提交模式?

set autocommit=0为开启,set autocommit=1为关闭。
参考:https://blog.csdn.net/xiao__miao/article/details/106052984

本文介绍了SQLAlchemy中with_lockmode('update')的使用,以及FOR UPDATE和LOCK IN SHARE MODE两种锁定模式。FOR UPDATE是排他锁,用于防止其他事务修改数据,而LOCK IN SHARE MODE是共享锁,允许读取但禁止修改。同时提到了update_nowait选项,当尝试锁定已锁定的记录时会抛出异常。此外,文章还提及了在SQLAlchemy中如何设置非自动提交模式。

被折叠的 条评论
为什么被折叠?



