row_count = cursor.fetchone()[0]
时间: 2024-10-24 14:07:47 浏览: 13
`fetchone()` 方法用于从查询结果集中获取下一行作为元组(tuple),并且会自动移动游标到下一行。然而,直接访问 `fetchone()[0]` 并不会返回影响的行数,而是尝试获取当前行的第一个元素。如果你想要获取 `execute()` 命令所影响的行数,你应该使用不同的方法。
在Python MySQL操作中,`execute()` 方法通常与 `commit()` 或 `execute()` 结合使用来获取影响的行数,而不是通过 `fetchone()`。例如,当插入新数据时,你可以通过调用 `execute()` 后获取 `lastrowid` 或 `insert_id()` 来得到插入的行数。这是示例:
```python
cursor.execute("INSERT INTO two (name, age) VALUES ('bill', 18)")
try:
inserted_row_count = cursor.lastrowid or cursor.rowcount # 如果是存储过程可能使用insert_id()
except_mysql_error:
print(f"An error occurred: {error_message}")
else:
print(f"Inserted rows count: {inserted_row_count}")
```
请注意,这里的 `lastrowid` 是针对InnoDB存储引擎的主键自增ID,如果不是这种情况,可能需要使用 `cursor.rowcount`。但是,对于某些SQL语句,如 `UPDATE` 或 `DELETE`,`rowcount` 可能不准确,因为它们改变了多行但不返回新的行计数。
阅读全文