Python MySQLdb TypeError:并非在字符串格式化期間轉(zhuǎn)換所有參數(shù)運行此腳本時:#! /usr/bin/env pythonimport MySQLdb as mdbimport 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我不明白為什么。我正在嘗試進行參數(shù)化查詢,但這只不過是一種痛苦。我對Python有些新意,所以這可能是一個明顯的問題。
3 回答

慕勒3428872
TA貢獻1848條經(jīng)驗 獲得超6個贊
而不是這個:
cur.execute( "SELECT * FROM records WHERE email LIKE '%s'", search )
試試這個:
cur.execute( "SELECT * FROM records WHERE email LIKE %s", [search] )
請參閱MySQLdb 文檔。原因是execute
第二個參數(shù)表示要轉(zhuǎn)換的對象列表,因為在參數(shù)化查詢中可以有任意數(shù)量的對象。在這種情況下,你只有一個,但它仍然需要是一個可迭代的(一個元組而不是一個列表也可以)。
添加回答
舉報
0/150
提交
取消