Jorey Bump
list at joreybump.com
Tue Sep 20 17:58:53 EDT 2005
Daniel Winkler wrote: > Hello together, > > I am trying to write a little web application with Apache2, mod_python > and MySQL. Unfortunately I have to fight with some strange effects: > > E.g.: > acl = db.cursor() > acl.execute("SELECT * FROM acl WHERE c = %s AND d = %s;", > (cID, dID)) > with cID and dID as integers causes an "TypeError: argument 2 must be a > mapping". Sometimes. I tried to restart the apache server and -- it > worked, but after reloading the SAME page without any modifications this > error occured again, also on similar SQL statements in other parts of > the code. > I already checked the arguments: They are just normal integers. > I tested the code with the interactive interface: everything worked > fine. (the code sniplet mentioned above is independet from Apache and > special mod_python features) > > Could someone please give me a hint how to debug this and to avoid these > (non-deterministic) errors? What might I have done wrong? You're mixing python string replacement with placeholders. You need to escape the placeholders (and the semicolon isn't necessary here): acl.execute("SELECT * FROM acl WHERE c = %%s AND d = %%s", (cID, dID))
|