python - cursor.fetchone() 返回 None 但数据库中的行存在

标签 python mysql mysql-python

我正在用 python 编写一个与 MySQL 数据库交互的程序。 对于 sql 查询,我使用 MySQLdb。 问题是 fetchone() 返回 None 但使用数据库浏览器我可以看到 that 行存在。 这段代码:

query = "SELECT * FROM revision WHERE rev_id=%s;" 
cursor.execute(query % revision_id)
row = cursor.fetchone()
if row == None:
    raise Exception("there isn't revision with id %s" % revision_id)

我不知道这里发生了什么。有什么想法吗?

编辑:好的,在某些情况下它可以工作,在某些情况下它不会,但无论如何当它 行不存在于表中。我将游标对象传递给函数,上面的代码在函数中。问题与此游标对象有关。问题可能是我将光标作为参数传递给函数吗?我该如何测试它?

EDIT2:是的,问题是光标在我使用几次后不起作用。是因为其他程序连接到数据库还是我做错了什么。 我有 while 循环,我在其中调用一个函数以从数据库获取信息。经过一些迭代后,它不再起作用。还有另一个程序写入 DB while while 循环工作。

最佳答案

好的,db.autocommit(True) 解决了我的问题。

关于python - cursor.fetchone() 返回 None 但数据库中的行存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11821976/

相关文章:

python - pip install mysql-python 失败并出现环境错误 : mysql_config not found

python - 如何使用 Python 将具有父/子(类别-子类别)层次结构的 csv 数据导入 MySQL

Python多维数组

python - 在字典中列出,在 Python 中循环

python - django.core.exceptions.ImproperlyConfigured : Error loading MySQLdb module:

跨多个连接表的 MySQL ORDER BY 列

mysql - IN 子句中的子查询?

python - 试图理解为什么只在第一次调用嵌套 for 循环

android - Sl4A 将 Intent 广播到 Minimalistic 文本小部件

mysql - SQL 查询合并两个表,同时还显示一个表中的所有记录