Verwenden von Parametern in einer CREATE TABLE … (Spalte DEFAULT ?)-Klausel in Python sqlite3 db-api

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

  •  23-12-2019
  •  | 
  •  

Frage

Ich möchte Python verwenden, um eine CREATE STATEMENT-Klausel auszuführen und Standardwerte für bestimmte Spalten mithilfe der Parameterersetzung durch ? anzugeben.(damit ich sicher Standardeinstellungen von Python-Typen angeben kann).

Es scheint nicht zu funktionieren, obwohl es gut funktioniert, wenn ich parametrische Anweisungen in einer SELECT-Anweisung oder einer ähnlichen Anweisung verwende.Zum Beispiel:

Wie erwartet:

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

Unerwartet:

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

Warum das?Ist das, was ich versuche, möglich?

War es hilfreich?

Lösung

Die ursprünglichen SQL-Anweisungen aller Ihrer Schemaobjekte werden in der Datenbank gespeichert (versuchen Sie es SELECT sql FROM sqlite_master).Bei einem so einfachen Textwert ist es nicht möglich, sich Parameterwerte zu merken, daher sind Parameter nicht zulässig CREATE xxx Aussagen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top