Seite 1 von 1

[sqlite3] Platzhalter

Verfasst: Donnerstag 27. März 2014, 15:25
von lackschuh
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

Re: [sqlite3] Platzhalter

Verfasst: Donnerstag 27. März 2014, 16:06
von cofi
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.

Re: [sqlite3] Platzhalter

Verfasst: Donnerstag 27. März 2014, 16:31
von lackschuh
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...

Re: [sqlite3] Platzhalter

Verfasst: Donnerstag 27. März 2014, 17:25
von cofi

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

Re: [sqlite3] Platzhalter

Verfasst: Donnerstag 27. März 2014, 17:31
von lackschuh
Ach so ja, danke für den Hinweis ;)