[Python-de] Strings, die " und ' enthalten

Achim Domma (Procoders) domma at procoders.net
Mit Okt 6 17:28:25 CEST 2004


Hi Uwe,

>     sql = "insert into archiv (path, album, artist, title) values('%s',
> '%s', '%s', '%s')"

Laß dir an der Stelle mal sql ausgeben. Du siehst, daß der String 'richtig'
erzeugt wird, nur ist es eben kein gültiges SQL. Dein Problem hat also
erstmal nichts mit Python zu tun.

>     self.cursor.execute(sql % (path, album, artist, title))

Ich kenne mich mit SQLLite nicht aus, aber warsch. tut's foldender Code:

    sql = "insert into archiv (path, album, artist, title)
        values(%s,%s,%s,%s)
    self.cursor.execute(sql, (path, album, artist, title))

> Was ist der kanonische Python-Weg, mit sowas umzugehen?

Wie gesagt, es ist kein Pythonproblem, sondern ein SQL Problem. Du mußt
entweder die Singlequotes richtig escapen (warsch. zwei Singlequotes) oder
du läßt es die Datenbank Bibliothek für dich machen. Wie das gehen sollte
siehst du in meinem Code oben.

Gruß,
Achim