Uso de parámetros en una cláusula CREATE TABLE... (columna DEFAULT?), en Python sqlite3 db-api

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

  •  23-12-2019
  •  | 
  •  

Pregunta

Quiero usar Python para ejecutar una cláusula CREATE STATEMENT, especificando valores predeterminados para ciertas columnas usando la sustitución de parámetros con?(para poder especificar de forma segura los valores predeterminados de los tipos de Python).

No parece funcionar, aunque funciona bien cuando uso declaraciones paramétricas en una declaración selecta o similar.Por ejemplo:

Como se esperaba:

>>> list(sqlite3.connect('sensemap.sql3').cursor().execute('select ?', (101,)))
[(101,)]

Inesperado:

>>> 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

¿Porqué es eso?¿Es posible lo que estoy intentando?

¿Fue útil?

Solución

Las declaraciones SQL originales de todos sus objetos de esquema se almacenan en la base de datos (pruebe SELECT sql FROM sqlite_master).Con un valor de texto tan simple, no es posible recordar los valores de los parámetros, por lo que no se permiten parámetros en CREATE xxx declaraciones.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top