【发布时间】:2012-08-03 01:14:45
【问题描述】:
我正在用 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 循环有效。
【问题讨论】:
-
print查询字符串(及其替换)到屏幕并将其复制/粘贴到mysql提示符中以确定。 -
更好的是,使用参数化查询而不是替换。
-
是的,查询字符串在 mysql promt 中工作正常
-
@IgnacioVazquez-Abrams 你能举个例子吗?
-
一些想法:1)松开“;”在 sql 语句的末尾 2) 检查您如何连接到数据库。如果是 ODBC/DSN,您可能需要仔细检查 DSN 是否指向正确的数据库服务器
标签: python mysql mysql-python