Python Sqlalchemy如何实现select for update
sqlalchemy 对于行级锁有两种实现方式,with_lockmode: 和 with_for_update,前者在sqlalchemy 0.9.0 被废弃,用后者代替。看下函数的定义:q = sess.query.with_for_update对应于sql:SELECT users.id AS users_id FROM users FOR UPDATE OF users NOWAITmysql 不支持这几个参数,转成sql都是:SELECT users.id AS users_id FROM users FOR UPDATE范例:结果:SELECT ... FOR UPDATE 的用法,不过锁定的数据是判别就得要注意一下了。由于InnoDB 预设是Row-Level Lock,所以只有「明确」的指定主键,MySQL 才会执行Row lock ,否则mysql 将会执行Table Lock 。
用户评论