在運行此腳本:Python的MySQLdb的類型錯誤:不是所有的參數字符串轉換期間格式化
#! /usr/bin/env python
import MySQLdb as mdb
import sys
class Test:
def check(self, search):
try:
con = mdb.connect('localhost', 'root', 'password', 'recordsdb');
cur = con.cursor()
cur.execute("SELECT * FROM records WHERE email LIKE '%s'", search)
ver = cur.fetchone()
print "Output : %s " % ver
except mdb.Error, e:
print "Error %d: %s" % (e.args[0],e.args[1])
sys.exit(1)
finally:
if con:
con.close()
test = Test()
test.check("test")
我得到的錯誤:
./lookup
Traceback (most recent call last):
File "./lookup", line 27, in <module>
test.check("test")
File "./lookup", line 11, in creep
cur.execute("SELECT * FROM records WHERE email LIKE '%s'", search)
File "/usr/local/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 187, in execute
query = query % tuple([db.literal(item) for item in args])
TypeError: not all arguments converted during string formatting
我零知道爲什麼。我試圖做參數化查詢,但它只是一個痛苦。我對Python有點新鮮,所以這可能是一個明顯的問題。
不需要/希望引用您的查詢參數。 –
即'cur.execute(「SELECT * FROM records WHERE email LIKE%s」,[search])' –
我在使用python2.7時遇到了這個問題,但是在使用python2.6時是正確的。你知道原因嗎? – Matt