如何从中获取匹配行MySQLdb.cursors.cursorsPython2.6

2024-09-30 16:42:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我在用python2.6和MySQLdb。我有一张有这些数据的表格

+----+--------+
| id | status |
+----+--------+
| 1  |     A  |
| 2  |     B  |
| 3  |     B  |
+----+--------+

我想做一个mysql更新,就像这个例子:

^{pr2}$

我需要知道更新中的所有id是否都存在于数据库中。我获得这些信息的想法是比较我尝试更新的项目数与匹配的行数。在这个例子中,数字是4对3。在

问题是我不知道如何从游标信息中获取“匹配的行”。我只在游标中看到此信息。\u info='匹配的行:3更改:2警告:0'。在

在cursor.rowcount是已更改的行数,因此=(

谢谢!在


Tags: 数据info信息id数据库警告statusmysql
2条回答

如果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返回匹配的行数:

db_connection = MySQLdb.connect(
        host = settings['dbHost'],
        user = settings['dbUser'],
        passwd = settings['dbPass'],
        db = settings['dbName'],
        client_flag = MySQLdb.constants.CLIENT.FOUND_ROWS
        )

文件:

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文档中有一个错误。”客户端标记“应为“客户端标记”)

相关问题 更多 >