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

StackOverflow https://stackoverflow.com//questions/23054864

  •  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 заявления.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top