문제

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 진술.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top