2016-05-22 10 views
0

Ich versuche, eine Zeile in meiner SQL-Datenbank mit Pymysql zu aktualisieren. Um das Ganze pythonischer zu machen, definiere ich die Variablen und die Position, um mit %s zu aktualisieren. Dies hat für eine Variable funktioniert, aber die andere steigt einen Fehler, den ich nicht verstehe. Dies ist mein Code:Pymysql UPDATE mit% s steigt unbekannter Fehler

with connection.cursor() as cursor: 
    #sql = "update tf_data set doi=\'"+str(DOI)+"\' where tf_data_id="+str(tf_data_id)+";" 
    sql = "update tf_data set doi=%(DOI)s where tf_data_id=%(data_id)s" 
    DOI=DOI 
    data_id = str(tf_data_id) 
    cursor.execute(sql) 

Anschluss am Anfang des Skripts definiert wurde und bereits gearbeitet hat. Die Variablen sind:

DOI= '10.1371/journal.pone.0151666' 

und tf_data_id = 1
wenn ich ausführen, was ich denke, das Kommando in mysql tun sollte es direkt workes:

update tf_data set doi='10.1371/journal.pone.0151666' where tf_data_id='1'; 

Kann jemand bitte sagen Sie mir, was das Problem in das ist?

Antwort

1

Sie müssen nur

sql = "update tf_data set doi='%s' where tf_data_id='%s'" % (str(DOI), str(tf_data_id)) 

oder Sie format() Methode

sql = "update tf_data set doi='{DOI}' where tf_data_id='{data_id}'".format(DOI=DOI, data_id= tf_data_id) 
+0

das erste Verfahren einen weiteren Fehler gab, die'format() Methode hat seinen Zweck erfüllt, dank nutzen konnte! – MaxS

+0

Was ist der Unterschied zwischen diesen Arten der Aktualisierung mit Pymsql? – MaxS

+0

@MaxS Beide Methoden sollten die gleichen Ergebnisse liefern. Könnten Sie die erste Methode noch einmal ausprobieren? – kvorobiev