2017-12-18 52 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)))) 
相关问题