Используя pysqlite, я делаю процедуру, чтобы сделать что-то с некоторыми данными.Аналогичные операции выполняются с аналогичными полями в нескольких таблицах и столбцах, поэтому я подумал, что могу параметризовать оператор SQL, как показано ниже:
def foo():
column = 'c'
table = 't'
row = 1
# preferred approach, gives syntax error
c.execute('SELECT ? FROM ? WHERE id=?', (column, table, row))
# sanity check, works fine
c.execute('SELECT c FROM t WHERE id=?', (row))
# workaround, also works, but is this the right way?
c.execute('SELECT % FROM % WHERE id=?' % (column, table), row))
Полученная ошибка не очень полезна (sqlite3.OperationalError: near "?": syntax error
), но я понимаю: Pysqlite не одобряет использование заполнителей таким образом.
Может ли кто-нибудь указать на то, что здесь происходит, наряду с правильным способом выполнения вышеизложенного?