字符串中没有足够的参数,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