pysqlite: Подстановка символов для имен столбцов или таблиц?

Используя 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 не одобряет использование заполнителей таким образом.

Может ли кто-нибудь указать, что здесь происходит, а также правильный способ выполнения вышеуказанных действий?

15
задан porgarmingduod 12 January 2012 в 20:01
поделиться