Ich habe ein Python-Skript, das rohe Film Textdateien in eine SQLite-Datenbank liest.Escaping Zeichen in Python und SQLite
Ich benutze re.escape (Titel), um Escape-Zeichen in die Zeichenfolgen einzufügen, um sie db-sicher zu machen, bevor die Einfügungen ausgeführt werden.
Warum funktioniert das nicht:
In [16]: c.execute("UPDATE movies SET rating = '8.7' WHERE name='\'Allo\ \'Allo\!\"\ \(1982\)'")
--------------------------------------------------------------------------- OperationalError Traceback (most recent call last)
/home/rajat/Dropbox/amdb/<ipython console> in <module>()
OperationalError: near "Allo": syntax error
Doch funktioniert diese (entfernt \‘in zwei Plätze):
In [17]: c.execute("UPDATE movies SET rating = '8.7' WHERE name='Allo\ Allo\!\"\ \(1982\)'") Out[17]: <sqlite3.Cursor object at 0x9666e90>
ich es nicht herausfinden. Ich kann auch diese führenden Zitate nicht wegwerfen, weil sie tatsächlich Teil des Filmtitels sind. Danke.
absolut. Quoting und Escaping sind Last-Resource-Kludges. Wenn Parameter verfügbar sind, benutze sie _always_ – Javier
BTW, die gleiche Idee funktioniert genauso gut für so ziemlich jede andere Datenbank, die den Namen auch verdient, und in praktisch jeder anderen praktischen Programmiersprache. * Jeder * macht es so, weil es * richtig * ist. –
Super danke Donal. Alles funktioniert jetzt gut. Ich hatte ähnliche Methoden mit RoR verwendet, wo es gut dokumentiert ist. Aber stundenlanges Suchen nach "python sqlite escape characters" brachte nichts. Python-Dokumente lassen viel zu wünschen übrig.Danke Donal und alle –