- TinyDB 教程
- TinyDB - 首頁
- TinyDB - 簡介
- TinyDB - 環境配置
- TinyDB - 插入資料
- TinyDB - 獲取資料
- TinyDB - 更新資料
- TinyDB - 刪除資料
- TinyDB - 查詢
- TinyDB - 搜尋
- TinyDB - where 子句
- TinyDB - Exists() 查詢
- TinyDB - Matches() 查詢
- TinyDB - Test() 查詢
- TinyDB - Any() 查詢
- TinyDB - All() 查詢
- TinyDB - one_of() 查詢
- TinyDB - 邏輯非
- TinyDB - 邏輯與
- TinyDB - 邏輯或
- TinyDB - 資料查詢處理
- TinyDB - 修改資料
- TinyDB - 更新資料 (upsert)
- TinyDB - 獲取資料
- TinyDB - 文件 ID
- TinyDB - 表格
- TinyDB - 預設表格
- TinyDB - 查詢快取
- TinyDB - 儲存型別
- TinyDB - 中介軟體
- TinyDB - 擴充套件 TinyDB
- TinyDB - 擴充套件
- TinyDB 有用資源
- TinyDB - 快速指南
- TinyDB - 有用資源
- TinyDB - 討論
TinyDB - 更新資料 (upsert)
我們討論了更新和插入查詢,但有時我們需要同時進行更新和插入操作。在這種情況下,TinyDB 提供了獨特的upsert查詢。此查詢幫助我們根據條件同時插入和更新資料。它的工作方式如下:
如果資料存在,則選擇更新操作。
如果資料不存在,則選擇插入操作。
語法
upsert查詢的語法如下:
db.upsert({ 'key' : 'value', 'logged - in' : True}, regular expression)
讓我們通過幾個例子來演示如何在 TinyDB 中使用upsert查詢。我們將使用前面章節中使用過的相同的學生資料庫。
示例 1
讓我們看看如何使用upsert查詢將學號為 2 的學生的地址更改為“Surat”。在這種情況下,我們有一個匹配的使用者,因此它將更新地址並將登入狀態設定為 True:
from tinydb import TinyDB, Query
db = TinyDB('student.json')
db.upsert({'address':'Surat'}, Query().roll_number==2)
這將產生以下輸出,這意味著記錄編號“2”已更新。
[2]
使用以下程式碼驗證記錄編號“2”是否已更新:
db.get(doc_id=2)
它將顯示更新後的資料:
{
'roll_number': 2,
'st_name': 'Ram',
'mark': [250, 280],
'subject': ['TinyDB', 'MySQL'],
'address': 'Surat'
}
示例 2
讓我們看看如何在表中對不存在的資料使用upsert查詢:
from tinydb import TinyDB, Query
db = TinyDB('student.json')
db.upsert({'E-mail':'ram@gmail.com','logged-in': True},
Query().roll_number==2)
它將顯示以下輸出,這意味著 ID 為“2”的文件已更新。
[2]
使用以下程式碼驗證更新後的值:
db.get(doc_id=2)
它將產生以下輸出:
{
"roll_number":2,
"st_name":"Ram",
"mark":[
250,
280
],
"subject":[
"TinyDB",
"MySQL"
],
"address":"Surat",
"logged-in":true,
"E-mail":"ram@gmail.com"
}
請注意,我們使用upsert查詢建立了一個新的鍵(E-mail),它之前不存在,併為其提供了值“ram@gmail.com”。
廣告