Python sqlite3 db-api에서 CREATE TABLE …(DEFAULT 열?) 절의 매개변수 사용
-
23-12-2019 - |
문제
Python을 사용하여 CREATE STATEMENT 절을 실행하고 ?로 매개변수 대체를 사용하여 특정 열에 대한 기본값을 지정하고 싶습니다.(파이썬 유형에서 기본값을 안전하게 지정할 수 있도록).
작동하지 않는 것 같습니다. 하지만 select 또는 유사한 명령문에서 매개변수 명령문을 사용할 때는 제대로 작동합니다.예를 들어:
예상대로:
>>> 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