这是代码
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完全无关......
答案 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))