[sqlite3] Platzhalter

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
lackschuh
User
Beiträge: 281
Registriert: Dienstag 8. Mai 2012, 13:40

Moin,

Folgendes treibt mich gleich in den Wahnsinn:

Code: Alles auswählen

tabelle = 'Movies' # ('Movies',)

with con:
    cur = con.cursor()
    cur.execute("PRAGMA table_info(?), tabelle")
    #cur.execute("PRAGMA table_info(%s)" % tabelle)

for row in cur.fetchall():
    print row
sqlite3.OperationalError: near "?": syntax error
Wenn ich es mir dem String Platzhalter mache, dann geht es (ist aber laut Doku 'verboten'). Weiss jemand, was ich da übersehen bzw. nicht kapiert habe?

mfg
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Schau dir mal den nicht funktionierenden String genau an. Ich sage, du hast keinen Platzhalter.

Dann bleibt die Frage, ob du hier ueberhaupt den sqlite3 Platzhalter benutzen kannst, denn die sind im Allgemeinen fuer Values und nicht fuer Tabellennamen.
lackschuh
User
Beiträge: 281
Registriert: Dienstag 8. Mai 2012, 13:40

Hallo

Den ersten Satz kapiere ich nicht. :K
Der zweite Satz ist einleuchtend. Das würde wahrscheinlich aus so stimmen.

Edit:

Nach langer Suche in der Doko (http://www.sqlite.org/c3ref/bind_blob.html)
The ? is a placeholder for a real value...
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Code: Alles auswählen

cur.execute("PRAGMA table_info(?), tabelle")
Du benutzt hier keine Platzhalter sondern _einen_ langen String in dem ein '?' vorkommt.
So wuerdest du einen Platzhalter benutzen:

Code: Alles auswählen

cur.execute("PRAGMA table_info(?)", "tabelle")
lackschuh
User
Beiträge: 281
Registriert: Dienstag 8. Mai 2012, 13:40

Ach so ja, danke für den Hinweis ;)
Antworten