Seite 1 von 1
[gelöst] mysql_escape_string Äquivalent für Python?
Verfasst: Freitag 12. September 2008, 09:51
von Ravetracer
Hallo zusammen.
Ich programmiere gerade ein Importscript für eine MySQL-Tabelle.
Die Quellen enthalten Texte, welche alle möglichen Sonderzeichen enthalten können.
Wie kann ich die Texte escapen, wie in PHP mit mysql_escape_string? Ich bekomme immer Fehlermeldungen, wenn z.B. ein Hochkomma auftaucht.
/EDIT:
Ok, in der Zwischenzeit habe ich die Lösung schon gefunden, per
import _mysql
und _mysql.escape_string()
Verfasst: Freitag 12. September 2008, 10:36
von lunar
Bitte nicht ... dafür nutzt man Platzhalter, lies doch einfach nochmal die Doku.
Verfasst: Freitag 12. September 2008, 10:43
von BlackJack
Nein das ist keine Lösung. Lass das "escapen" das Datenbankmodul automatisch für Dich machen. Die Werte sollte man nicht selber in die Zeichenkette hineinformatieren sondern `execute()` die Arbeit überlassen.
Namen die mit einem Unterstrich beginnen, kennzeichnen Implementierungsdetails, also lass besser die Finger von dem Modul.
Verfasst: Freitag 12. September 2008, 11:20
von Ravetracer
Meint ihr diese Doku hier?
http://mysql-python.sourceforge.net/MySQLdb.html
Das sagt mir leider nicht viel über das Escapen.
Wie muss ich es denn richtig machen?
Ich fange gerade erst mit MySQL unter Python an (mit Python selbst nicht

).
Außerdem habe ich schon ewig nichts mehr mit Python gemacht und muss erstmal wieder reinkommen.
/EDIT:
Hier ist mal mein Code, wie ich ihn bisher habe:
Code: Alles auswählen
conn = MySQLdb.connect(host="...",user="...",passwd="...",db="...")
cursor = conn.cursor(MySQLdb.cursors.DictCursor)
cursor.execute("SELECT id_user,datum,taetigkeit FROM prc_taetigkeit")
rows1 = cursor.fetchall()
sql_1 = "INSERT INTO vbase_dayreports (id_user,reportDay,r_sonstiges) VALUES "
for row in rows1:
sql_1+="(%s,'%s','%s')," % (row["id_user"],row["datum"],row["taetigkeit"])
sql_1 = sql_1[:-1]
cursor.execute(sql_1)
Vielleicht habt ihr ja 'nen Vorschlag.
Ich bekomme immer nur 'ne Fehlermeldung.
Verfasst: Freitag 12. September 2008, 11:29
von Leonidas
[wiki]Parametrisierte SQL-Queries[/wiki]
Verfasst: Freitag 12. September 2008, 11:37
von Ravetracer
Ok, hab ein wenig weitergelesen.
So ist das nun ok, oder?
Code: Alles auswählen
sqlvars = []
for row in rows1:
sqlvars.append((row["id_user"],row["datum"],row["taetigkeit"]))
print(sqlvars)
sql_1 = "INSERT INTO vbase_dayreports (id_user,reportDay,r_sonstiges) VALUES (%s,%s,%s)"
cursor.executemany(sql_1,sqlvars)
cursor.close()
conn.close()
Verfasst: Dienstag 16. September 2008, 15:49
von lunar
Ja
Verfasst: Dienstag 16. September 2008, 22:28
von audax
Sieht doch auch viel hübscher aus, nicht wahr?
