Hello, I have a function that executes a SQL statement with MySQLdb: def executeSQL(sql, *args): print sql % args cursor = conn.cursor() cursor.execute(sql, args) cursor.close()
it's called like that: sql = "INSERT INTO %s (%s) VALUES (%s)" executeSQL(sql, DOMAIN_TABLE, DOMAIN_FIELD, domainname) The statement that is printed looks ok (missing quotes, but AFAIK cursor.execute does that): INSERT INTO domains (domain) VALUES (xgm.de) but MySQL prints an error: Traceback (most recent call last): File "manage.py", line 90, in ? addDomain(domainName) File "manage.py", line 27, in addDomain executeSQL(sql, DOMAIN_TABLE, DOMAIN_FIELD, domainname) File "manage.py", line 22, in executeSQL cursor.execute(sql, args) File "/usr/lib/python2.4/site-packages/MySQLdb/cursors.py", line 163, in execute self.errorhandler(self, exc, value) File "/usr/lib/python2.4/site-packages/MySQLdb/connections.py", line 35, in defaulterrorhandler raise errorclass, errorvalue _mysql_exceptions.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''domains' ('domain') VALUES ('xgm.de')' at line 1") I see the error: 2 opening quotes but only 1 closing around domains. But where do they come from? Note that there are no quotes at print sql % args. Thanks, Florian -- http://mail.python.org/mailman/listinfo/python-list