我正在编写与MySQL数据库交互的python程序。 对于sql查询,我使用MySQLdb。 问题是fetchone()
返回无,但与数据库浏览器,我可以看到 该行存在。 此段代码:cursor.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)
我不知道这里发生了什么事。有任何想法吗?
编辑:好的,在某些情况下,它在某些情况下它不起作用,但无论如何,当它 不起作用的行在表中存在。我将光标对象传递给函数,上面的代码在函数中。问题与这个游标对象有关。可能是我将光标作为参数传递给函数的问题?如何测试它?
EDIT2:是的,光标在我多次使用后不起作用的问题。无论是因为其他程序连接到数据库还是我做错了什么。 我有while
循环,我在其中调用函数来从数据库中获取信息。在一些 迭代后,它不再工作。还有另一个程序写入 DB,而while
回路工作。
将查询字符串(及其替代)'print'打印到屏幕上并将其复制/粘贴到'mysql'提示符中以确定。 – 2012-08-06 02:51:28
更好的是,使用参数化查询而不是替代。 – 2012-08-06 02:57:05
是的,查询字符串在mysql promt中正常工作 – ashim 2012-08-06 02:57:11