I don't think you can substitute the table name and column names in the execute, just values ( I could be wrong)
try building it like this: sql = "INSERT INTO %s %s VALUES " % (taablename, columnstuple, '(%s)') cursor.execute(sql, values) > 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 > -- http://mail.python.org/mailman/listinfo/python-list