在使用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