RagePwn
RagePwn

Reputation: 421

Not enough arguments in string, multiple IN clauses with list values in MySQL query from Python

I have the below code a cannot get it to work once I add the second IN clause to filter on last names.

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

Error I get is

TypeError: not enough arguments for format string

Upvotes: 0

Views: 44

Answers (1)

Bakhrom Rakhmonov
Bakhrom Rakhmonov

Reputation: 702

Try this:

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

Upvotes: 1

Related Questions