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()
[gelöst] mysql_escape_string Äquivalent für Python?
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.
Namen die mit einem Unterstrich beginnen, kennzeichnen Implementierungsdetails, also lass besser die Finger von dem Modul.
- Ravetracer
- User
- Beiträge: 7
- Registriert: Montag 10. Dezember 2007, 14:50
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:
Vielleicht habt ihr ja 'nen Vorschlag.
Ich bekomme immer nur 'ne Fehlermeldung.
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)
Ich bekomme immer nur 'ne Fehlermeldung.
- Ravetracer
- User
- Beiträge: 7
- Registriert: Montag 10. Dezember 2007, 14:50
Ok, hab ein wenig weitergelesen.
So ist das nun ok, oder?
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()