2017-04-02 1 views
0

Gibt es eine Möglichkeit, diese beiden Updates in einer einzigen Anweisung zu tun?Python Sqlite UPDATE mehrere Werte

cur.execute("UPDATE table_name1 SET email = '[email protected]' WHERE id = 4") 
cur.execute("UPDATE table_name1 SET phone = '0400-123-456' WHERE id = 4") 

Ich habe alle Arten von Variationen versucht, aber es kann nicht funktionieren.

Edit: Ich möchte E-Mail, Telefon und ich würde als Parameter übergeben.

+0

Haben Sie einen [Blick auf die ** 'sqlite3' ** Dokumentation] genommen (https://docs.python.org/2/library/sqlite3.html)? –

+0

Ja, Peter. Ich habe es angeschaut, aber es hilft nicht bei der Python-Implementierung von UPDATE für mehrere Werte. –

Antwort

1

Folgendes funktioniert: Es ist nur Standard-SQL an dieser Stelle.

cur.execute("""UPDATE table_name1 
      SET email = '[email protected]', phone = '0400-123-456' 
      WHERE id = 4""") 
+0

Für mich gab es einen Syntaxfehler. Ich musste die Anführungszeichen zwischen Tabellenname und SET entfernen. 'cur.execute (" UPDATE tabellenname1 SET email = '[email protected]', phone = '0400-123-456' " " WHERE id = 4 ")' –

1

OK. Ich habe eine Lösung entwickelt, die mit Parametern arbeitet.

Zuerst dank David für seine ursprüngliche Antwort. Es hatte einen kleinen Syntaxfehler (korrigiert in den Kommentaren für diese Antwort), aber es war genug, um mir zu helfen, herauszufinden, wie man es ohne Parametrierung funktioniert.

. (Anmerkung: Ich denke, David seine Antwort geschrieben, bevor ich die Frage bearbeitet die Notwendigkeit fügen mit Parametern zu arbeiten)

Dann this answer hat mir geholfen, die Lösung parametise.

Hier ist meine Lösung für die Frage. Ich greife es für den Fall, dass jemand anderes das gleiche Problem hat, weil ich ziemlich viel gesucht habe, bevor ich die ursprüngliche Frage gepostet habe und die Antwort nicht gefunden habe.

conn = sqlite3.connect('connex.db') 
cur = conn.cursor() 
mobileval = '0400-123-456' 
emailval = '[email protected]' 
constrain = 4 

cur.execute("UPDATE licontacts310317 SET liemail=%s, limobile=%s 
      WHERE %s=?" % (liemailval, limobileval, id), (constrain,)) 

conn.commit() 
conn.close()