Seite 1 von 1

SQLite syntax error bei ?

Verfasst: Freitag 9. Oktober 2015, 13:20
von martinjo
Hallo,

ich bin ratlos, schon gestern habe ich versucht eine SQLite Tabelle zu ändern und habe es auf heute verschoben, aber ich komme nicht weiter, wenn ich die Werte mittel ? ersetzen lassen will.
Wenn ich den gewünschten Wert direkt in den SQL Befehl eingebe läuft es problemlos durch. Hier jedoch ...

Code: Alles auswählen

from sqlite3 import dbapi2 as sqlite
con = sqlite.connect(DATABASE)
con.row_factory = Row
cur = con.cursor

column_name = "neue_spalte"
query = '''ALTER TABLE meine_tabelle ADD COLUMN ? text'''
cur.execute(query, [column_name]
... erhalte ich diesen Fehler:
sqlite3.OperationalError: near "?": syntax error
Was mache ich Falsch?

Hier ( https://docs.python.org/2/library/sqlite3.html ) steht ja:
# Never do this -- insecure!
symbol = 'RHAT'
c.execute("SELECT * FROM stocks WHERE symbol = '%s'" % symbol)

# Do this instead
t = ('RHAT',)
c.execute('SELECT * FROM stocks WHERE symbol=?', t)
print c.fetchone()
Bei mir funktioniert jedoch nut die 1. Methode... :K

Re: SQLite syntax error bei ?

Verfasst: Freitag 9. Oktober 2015, 13:47
von Sirius3
@martinjo: die Variablenersetzung per Platzhalter funktioniert nur bei Variablen. Spaltennamen sind, wie Tabellennamen, Namen. Da macht ein Platzhalter keinen Sinn.

Re: SQLite syntax error bei ?

Verfasst: Freitag 9. Oktober 2015, 14:53
von BlackJack
Und nur so prophylaktisch: Das macht man in der Regel ja nicht per Programm, denn normale Programme verändern die Datenbankstruktur nicht. Das sollte also nichts sein was Dein Programm regelmässig macht, sonst stimmt was mit dem Datenbankentwurf nicht.

Re: SQLite syntax error bei ?

Verfasst: Freitag 9. Oktober 2015, 15:56
von martinjo
Vielen Dank.

Es ging nur um zwei Spalten die ich hinzufügen wollte. Jedoch baue ich mir auch für so Kleinigkeiten gerne Skripte damit ich es später wiederholen kann um Zeit zu sparen. Dass ging wohl nach hinten los :-)