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

ash*_*him 8 python mysql mysql-python

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

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)
Run Code Online (Sandbox Code Playgroud)

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

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

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

ash*_*him 5

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