session = DBSession() #spot = session.execute("select * from spot where id=1 for update;") #spot.fetchall() send_spot = session.query(Spot).filter( Spot.id == 1).with_for_update().one() spot.name='qwerdsdfdf' #session.execute("update spot set name='ccbbbaaaaa' where id=1;") session.commit() 如上所示,想在更新时加个排它锁,但是执行结果是(1205, u'Lock wait timeout exceeded; try restarting transaction') 通过查询事物和锁的信息,发现会产生 2 个线程 2 个事物,update 语句变成单独一个事物在等待第一条的锁。可是这明明是一个事物,为什么变成 2 个了? 如果把 update 语句用 execute 执行就会正常。求助!
