2017-04-02 104 views
0

有沒有辦法在單個指令中完成這兩個更新?Python Sqlite更新多個值

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") 

我試過各種變化,但不能得到它的工作。

編輯:我想通過電子郵件,電話,我會作爲參數。

+0

你採取了[看看'sqlite3' **文檔](https://docs.python.org/2/library/sqlite3.html)嗎? –

+0

是的。我看了一下,但它沒有幫助在多個值上執行UPDATE的python實現。 –

回答

1

以下工作:在這一點上它只是標準的SQL。

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

對我來說,有一個語法錯誤。我不得不刪除表名和SET之間的引號。 'cur.execute(「UPDATE table_name1 SET email ='[email protected]',phone ='0400-123-456'」 「WHERE id = 4」)' –

1

好的。我提出了一個解決方案,可以使用參數。

首先感謝David爲他的原始答案。它有一個小的語法錯誤(在對該答案的評論中得到糾正),但它足以幫助我解決如何在沒有參數化的情況下使其工作。

(注:我覺得大衛張貼了他的答覆之前,我編輯的問題,有必要增加使用參數)

然後this answer幫我parametise的解決方案。

這是我對問題的解決方案。爲了防止別人遇到同樣的問題,我正在醞釀,因爲在發佈原始問題之前我做了相當多的搜索,找不到答案。

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()