当我的python程序使用mysql时,这是一个非常奇怪的错误

时间:2011-05-09 13:22:39

标签: python mysql mysql-python

这是代码

sql="SELECT node_id FROM %s WHERE domain='%s';"%(config.nodetable,url)
r=getBySql(sql) 

我的问题是尝试在mysql数据库中保存数据,因此这段代码应该重复执行超过数十万次。并且在开始时一切顺利,直到解释器多次返回错误:

File "/usr/lib/pymodules/python2.6/MySQLdb/connections.py", line 35, 
in defaulterrorhandler
    raise errorclass, errorvalue
OperationalError: (1054, "Unknown column 'h' in 'where clause'")

但我发现要执行的sql字符串完全没问题:

SELECT node_id FROM testnodewww WHERE domain='http://service.qq.com';

我完全不知道。为什么一开始工作得很好?为什么错误通知“未知列'h'”?我的代码与列h完全无关......

1 个答案:

答案 0 :(得分:1)

MySQLdb会将您的参数转换为SQL文字,不要在sql字符串中使用单引号,或者在末尾使用分号,并且不要使用字符串插值:

sql = "SELECT node_id FROM %s WHERE domain=%s" % (config.nodetable, url)

请改为:

cursor.execute("SELECT node_id FROM %s WHERE domain=%s", (config.nodetable, url))