Метод getModule, возвращающий неназванный модуль для класса в названном модуле

Вы просто не можете использовать заполнители для имен столбцов или таблиц. У меня нет авторитетной цитаты для этого - я «знаю» это только из-за того, что пробовал это и от неудачи. Это имеет смысл:

  • Если параметры столбцов и таблицы могут быть параметризованы, было бы мало смысла готовить (execute -ing) инструкцию SQL перед извлечением, поскольку все части оператор может быть заменен.
  • Я не уверен в pysqlite1, но MySQLdb автоматически цитирует все строковые параметры. Имена столбцов и таблиц не должны указываться. Таким образом, это усложнит синтаксический разбор, требуемый драйвером, если ему нужно будет решить, имеет ли местозаполнитель имя столбца или таблицы по сравнению со значением, которое требуется для цитирования.

Короче говоря, вы нашли Правильный путь - использовать строковое форматирование.

c.execute('SELECT {} FROM {} WHERE id=?'.format(column, table), row))

1 Не все параметры котировки драйверов - oursql нет, поскольку он отправляет SQL и аргументы на сервер отдельно.

20
задан Carlos Heuberger 28 June 2017 в 04:57
поделиться