Использование параметров в предложении CREATE TABLE… (столбец DEFAULT ?) в Python sqlite3 db-api
-
23-12-2019 - |
Вопрос
Я хочу использовать 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
Почему это?Возможно ли то, что я пытаюсь?
Решение
Исходные операторы SQL всех объектов вашей схемы хранятся в базе данных (попробуйте SELECT sql FROM sqlite_master
).При таком простом текстовом значении невозможно запомнить значения параметров, поэтому параметры не допускаются в CREATE xxx
заявления.
Не связан с StackOverflow