Eddie780
2021-07-20 13:07
采纳率: 100%
浏览 240
已结题

pymysql中执行事务时,使用select …… for update为何无法锁行?

conn = pymysql.connect(...)
lsc = conn.cursor()
lsc.execute("select * from user where uid=%s for update;", (101, ))
lsallrow = lsc.fetchone()
time.sleep(10)
conn.commit()

想写一个事务字段uid是user表的主键,数据库引擎是InnoDB
根据之前学校里学的理解:for update之后,uid=101这行应该是锁上了,无法被编辑。
但在sleep(10)期间,使用另一个终端窗口执行更改用户101的money字段居然可以成功。
那这个for update锁行有什么意义?

img

5条回答 默认 最新

相关推荐 更多相似问题