Reputation: 431
Another one of those questions. I'm trying to do:
self.table = 'table'
a = 'column'
b = 'value'
c.execute('INSERT INTO ? (?) VALUES (?)', (self.table, a, b))
But I'm getting
<class 'sqlite3.OperationalError'>:near "?": syntax error
At the same time,
c.execute('INSERT INTO {0} ({1}) VALUES ({2})'.format(self.table, a, b))
Works flawlessly, except for the security concerns.
I realize I'm not the first one to have this issue, but I have yet to find a solution that works for me.
Upvotes: 2
Views: 2461
Reputation: 368934
Table names, column names cannot be parameterized. Try following instead.
self.table = 'table'
b = 'value'
c.execute('INSERT INTO {} ({}) VALUES (?)'.format(self.table, a), (b,))
Upvotes: 7