Seite 1 von 1
Operational Error: syntax Error
Verfasst: Samstag 25. September 2010, 13:36
von grevenilvec
Hallo zusammen,
ich hab folgendes Problem, ich möchte aus meiner lokalen Datenbank n paar Sachen auslesen und mache das mit folgendem Befehl:
Code: Alles auswählen
self.qCursor.execute('''SELECT * FROM existingQuestions WHERE level >= ? AND level <= ? AND ID NOT IN ?''', (minlevel, maxLevel, solvedQuestions))
Erhalte dabei aber immer folgenden Fehler:
self.qCursor.execute('''SELECT * FROM existingQuestions WHERE level >= ? AND level <= ? AND ID NOT IN ?''', (minlevel, maxLevel, solvedQuestions))
sqlite3.OperationalError: near "?": syntax error
Anhand der beim Suchen gefundenen Beiträge komm ich bei dem Fehler nicht wirklich weiter... :K
Was mach ich denn falsch?
Vielen Dank schonmal für eure Hilfe!
grüße greven
Re: Operational Error: syntax Error
Verfasst: Samstag 25. September 2010, 14:13
von BlackJack
@grevenilvec: Ich weiss nicht ob es daran liegt, aber das dritte '?' steht nicht für einen einzelnen Wert, dass kann man so nicht dort einsetzen lassen.
Die ersten beiden Bedingungen könnte man in SQL übrigens auch mit einem 'BETWEEN' ausdrücken.
Re: Operational Error: syntax Error
Verfasst: Samstag 25. September 2010, 14:16
von grevenilvec
Danke für den Hinweis mit dem Between... War mir ned sicher ob sqlite das kann.
Und, joa, an dem Punkts wirds scheitern. Is mir doch glatt entgangen. ^^ Danke. Wie parametrisier ich das ganze denn dann, wenn ich ne Liste oder n Array hab?
Re: Operational Error: syntax Error
Verfasst: Samstag 25. September 2010, 14:20
von querdenker
Schnellschuss :
Code: Alles auswählen
self.qCursor.execute('''SELECT * FROM existingQuestions WHERE level Between ? and ? AND ID NOT IN (?)''', (minlevel, maxLevel, solvedQuestions))
Re: Operational Error: syntax Error
Verfasst: Samstag 25. September 2010, 14:24
von grevenilvec
Merci!

Re: Operational Error: syntax Error
Verfasst: Samstag 25. September 2010, 14:27
von BlackJack
Das wird nicht funktionieren -- *ein* '?' steht auch nur für *einen* Wert. Du wirst die SQL-Anfrage dynamisch erstellen müssen, dass da für jeden Wert ein '?' durch Kommas getrennt in den Klammern steht.
Wobei ich das vom Entwurf her komisch finde, dass das offenbar nicht in der Datenbank erfasst wird, welche Fragen beantwortet sind.
Re: Operational Error: syntax Error
Verfasst: Samstag 25. September 2010, 22:52
von grevenilvec
Hmm, da hast du eigentlich recht. Danke für diesen Hinweis.
Ich denke immer gerne über zwei Ecken statt den direkten Weg zu nehmen. ^^
Re: Operational Error: syntax Error
Verfasst: Dienstag 28. September 2010, 16:09
von grevenilvec
und weils so schön war gleich nochmal ne Frage zum Thema Datenbanken:
mein Code zum erstellen der Datenbank schaut so aus:
Code: Alles auswählen
self.FILENAME = "physimon.sdb3"
if not os.path.exists(self.FILENAME):
self.phConnection = sqlite3.connect(self.FILENAME)
self.phCursor = self.phConnection.cursor()
self.qCursor = self.phConnection.cursor()
self.tCursor = self.phConnection.cursor()
sql = """
CREATE TABLE existingPhysimons (
ID INTEGER PRIMARY KEY,
level INTEGER,
department TEXT,
name TEXT,
nickname TEXT,
experience INTEGER,
opensubmaps INTEGER
)
"""
self.phCursor.execute(sql)
self.phCursor.commit()
self.setUpLADB()
Wenn ich die Anwendung ausführe, meldet er mir immer, dass der phCursor kein Attribut commit() besitzt. Am Anfang importiere ich ganz normal sqlite3 und auch sonst hab ich das mal mit den verschiedenen Tuts vergleichen und seh den Fehler hier nicht.
Ach ja, ich arbeite mit Eclipse (Pydev 1.6 und Python 2.6)...
Vielen Dank auch hier schonmal.

Re: Operational Error: syntax Error
Verfasst: Dienstag 28. September 2010, 17:00
von EyDu
Na dann würde ich statt des Cursors mal die Connection fragen.
Re: Operational Error: syntax Error
Verfasst: Dienstag 28. September 2010, 17:16
von grevenilvec
oh, ok... Hatte das nur immer mir dem Cursor gelesen in den ganzen Beispielen.
Merci.
