字符串中没有足够的参数,Python中的MySQL查询中带有列表值的多个IN子句

我有下面的代码,一旦添加第二个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 

回答:

试试这个:

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))))

回答:

按照MySQLCursor.execute() documentation,应该有查询字符串参数之后逗号。例如,cursor.execute(select_stmt, { 'emp_no': 2 })

以上是 字符串中没有足够的参数,Python中的MySQL查询中带有列表值的多个IN子句 的全部内容, 来源链接: utcz.com/qa/260681.html

回到顶部