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

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条回答 默认 最新

  • python收藏家 2021-07-20 14:10
    关注

    sql语句中uid为什么写成元组形式呢,试过直接写成uid=101 这种的能查询出结果么? 看设计的uid是int类型

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 8月2日
  • 已采纳回答 7月25日
  • 创建了问题 7月20日