I’m having an issue with a prepared statement in Python I can’t solve so far.
The Query, which should be execute is e.g.:
SELECT md5 FROM software WHERE software_id IN (1, 2, 4)
So I tried to execute a Query like this:
software_id_string = "(2, 3, 4)"
cursor.execute("SELECT md5 FROM software WHERE software_id IN %s",
software_id_string)
The Problem is that there are ” added to the string –> ‘(2, 3, 4)’, so that the Query will be:
SELECT md5 FROM software WHERE software_id IN ''(2, 3, 4)''
I’ve also tried to rebuild the Script like this:
software_id_string = " 1 OR software_id = 2"
cursor.execute("SELECT md5 FROm software WHERE software_id = %s",
software_id_string)
This works only for the first id, which will be submitted (in this case 1), because the OR-part won’t be interpeted as an SQL Statement…
Is there any possibility to fix the issues with the prepared statements?
You need one placeholder for each item in your parameter list.
You can use string operations to get that part done:
%sfor each parameter, andIn the next step you can pass your two arguments to
execute()as recommended in the DB-API documentation.