0

这是代码

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

我的问题是试图将数据保存在 mysql db 中,所以这段代码应该重复执行数十万次。一开始一切都很顺利,直到解释器多次返回错误:

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 列完全无关......

4

1 回答 1

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))
于 2011-05-09T13:30:55.743 回答