Использование параметров в предложении CREATE TABLE ... (column DEFAULT?) В Python sqlite3 db-api

Я хочу использовать python для выполнения предложения CREATE STATEMENT, указав значения по умолчанию для определенных столбцов с помощью замены параметров на? (так что я могу смело указывать значения по умолчанию для типов Python).

Кажется, он не работает, хотя работает нормально, когда я использую параметрические операторы в операциях выбора или аналогичных. Например:

Как и ожидалось:

>>> list(sqlite3.connect('sensemap.sql3').cursor().execute('select ?', (101,)))
[(101,)]

Неожиданный:

>>> sqlite3.connect('sensemap.sql3').cursor().execute('create table mytable (mycolumn default ?)', (101,))
Traceback (most recent call last):
  File "<console>", line 1, in <module>
OperationalError: near "?": syntax error

Это почему? Возможно ли то, что я пытаюсь сделать?

1 ответ

Решение

Исходные операторы SQL всех ваших объектов схемы хранятся в базе данных (попробуйте SELECT sql FROM sqlite_master). При таком простом текстовом значении невозможно запомнить значения параметров, поэтому параметры не допускаются в CREATE xxx заявления.

Другие вопросы по тегам