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