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? :D