簡體   English   中英

使用字典列表更新表

[英]Update table using a list of dictionaries

我有一個dicts列表,這實際上是我之前選擇的一個結果,我已經轉換為dict(這是我可以編輯某些列的值):

sql_select = "SELECT key1, key2, value1, value2 FROM table_a"
self.dbcur.execute(sql_select)
matchedrows = self.dbcur.fetchall()

dictrows = [dict(row) for row in matchedrows]
for row in dictrows:
    ....process data, update some fields etc.

現在我想把我的更改寫回我的sqlite表,我明顯的選擇是嘗試更新語句,但我很難勉強嘗試構建它(缺乏知識)

sql_update = ('UPDATE table_a SET value1 = ?, value2 = ? WHERE key1 = ? and key2 =?')
self.dbcur.execute(sql_update, dictrows)
self.dbcon.commit()

這可能嗎? 或者我應該看一個替代方法,如插入臨時表等?

sqlite3數據庫適配器以以下形式獲取命名參數:keyname 結合cursor.executemany()您可以使用cursor.executemany()您的詞典列表轉換為一系列UPDATE語句:

sql_update = ('''\
    UPDATE table_a SET value1 = :value1, value2 = :value2
    WHERE key1 = :key1 and key2 = :key2''')
self.dbcur.executemany(sql_update, dictrows)

對於dictrows列表中的每個字典,查詢將字典中的鍵值value1value2key1key2作為SQL參數,並執行UPDATE語句。

當然,您必須使用詞典中的實際鍵名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM