我在用python2.6和MySQLdb。我有一张有这些数据的表格
+----+--------+
| id | status |
+----+--------+
| 1 | A |
| 2 | B |
| 3 | B |
+----+--------+
我想做一个mysql更新,就像这个例子:
^{pr2}$我需要知道更新中的所有id是否都存在于数据库中。我获得这些信息的想法是比较我尝试更新的项目数与匹配的行数。在这个例子中,数字是4对3。在
问题是我不知道如何从游标信息中获取“匹配的行”。我只在游标中看到此信息。\u info='匹配的行:3更改:2警告:0'。在
在cursor.rowcount是已更改的行数,因此=(
谢谢!在
如果cursor.\u info包含该字符串,那么您只需使用regex:
re.search(r'Rows matched: (\d+)', cursor._info).group(1)
提取3或者,如果您使用的是InnoDB表(支持事务),您可以执行两个查询:首先只执行
SELECT id FROM my_table WHERE id in (1,2,3,10001)
,然后获取cursor.rowcount
,它将返回匹配行的数量。然后执行更新。在同一个游标中运行的所有查询都是同一事务的一部分,因此可以保证没有其他进程在查询之间写入数据库。在来源:见http://zetcode.com/databases/mysqlpythontutorial/
FOUND_ROWS选项使
cursor.rowcount
返回匹配的行数:文件:
http://mysql-python.sourceforge.net/MySQLdb-1.2.2/public/MySQLdb.constants.CLIENT-module.htmlhttp://dev.mysql.com/doc/refman/5.6/en/mysql-real-connect.html
(MySQLdb文档中有一个错误。”客户端标记“应为“客户端标记”)
相关问题 更多 >
编程相关推荐