2017-12-18 70 views
0

我有下面的代碼,一旦添加第二個IN子句以過濾姓氏,就無法使其工作。字符串中沒有足夠的參數,Python中的MySQL查詢中帶有列表值的多個IN子句

format_fname = ','.join(['%s'] * len(stFirstnames)) 
format_lname = ','.join(['%s'] * len(stLastnames)) 

curDox.execute("SELECT * FROM user WHERE firstname IN (%s) AND lastname IN (%s)" % format_fname, 
       tuple(stFirstnames), format_lname,tuple(stLastnames)) 

錯誤我得到的是

TypeError: not enough arguments for format string 

回答

1

試試這個:

format_fname = ', '.join(['\'%s\''] * len(stFirstnames)) 
format_lname = ', '.join(['\'%s\''] * len(stLastnames)) 

curDox.execute("SELECT * FROM user WHERE firstname IN (%s) AND lastname IN (%s)" % (format_fname % tuple(stFirstnames), (format_lname % tuple(stLastnames)))) 
相關問題