如何在.commit上获取实际的cursor.rowcount?

| 我在Python中使用MySQLdb。 我的更新可能成功或失败:
  UPDATE table
     SET reserved_by = PID
         state = \"unavailable\"
   WHERE state = \"available\"
     AND id = REQUESTED_ROW_ID
   LIMIT 1;
如您所知,多个进程正在使用数据库,我需要进程能够自己安全地获取行,而不会因争用条件而引起问题。 我的理论(也许是错误的)是,只有一个进程能够通过该查询成功(.rowcount = 1)-其他进程将失败(.rowcount = 0)或获得不同的行(.rowcount = 1)。 问题是,似乎通过MySQLdb发生的所有事情都发生在虚拟世界中-.rowcount读取= 1,但是您只有执行.commit()才能真正知道是否确实发生了任何事情。 我的问题: 在MySQL中,自身内部是否只有一个UPDATE原子?也就是说,如果上面的同一UPDATE(具有不同的PID值,但具有相同的REQUESTED_ROW_ID)以“一次”发送到同一MySQL服务器,是否可以保证一个将成功而另一个将失败? 调用\“ conn.commit()\”之后,是否有办法知道是否有有意义的更改? **我可以为实际的提交操作获得可靠的.rowcount吗? .commit操作是否发送实际的查询(完整的SET和WHERE条件),还是仅对受影响的行执行SET,而与激发它们的WHERE子句无关? 我的问题可以通过.autocommit巧妙地解决吗?     
已邀请:
        打开
autocommit
commit
操作只是“确认”更新已完成。替代方法是
rollback
,它“撤消”已进行的任何更新。     

要回复问题请先登录注册