pymysql-通过WHERE / LIMIT更新行并获取更改的行的ID(auto_increment值)

时间:2019-01-29 19:51:40

标签: python mysql python-3.x pymysql

我有一个具有数百万条记录的表,并且越来越多的工作线程同时访问。锁定整个表会大大降低性能。是否可以使用一条语句来获取使用pymysql影响的行的ID?内置函数还是创意SQL?

Pymysql(Python 3)的基本示例:

cursor.execute('UPDATE the_table SET checked = 1 WHERE checked = 0 LIMIT 1')
mysql.commit()
id = ??

SQL会更改一行,但不会返回任何内容来检查受影响的行。尽管有文档建议,在这种情况下 cursor.lastrowid 不适用于UPDATE。有什么办法查看刚刚受影响的行吗?

我已经看到几个人问类似的问题,这使我相信这不可能。我可能会遇到这种错误吗?锁定是解决此问题的唯一方法吗?

0 个答案:

没有答案