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 に答える