TinyDB - 修改資料



我們已經討論了update查詢,透過它我們可以修改值以及處理資料庫中的資料。但是update查詢,例如db.update(fields, query),允許我們透過新增或覆蓋其值來更新文件。

但有時,我們想刪除一個欄位或需要增加其值。在這種情況下,我們可以傳遞一個函式而不是欄位。我們可以使用以下操作與更新查詢一起使用:

增量查詢

顧名思義,增量查詢用於增加資料庫中鍵的值。增量查詢的語法如下:

from tinydb.operations import increment
db.update(increment('key'))

新增查詢

新增查詢用於向鍵的值新增值。它也適用於字串。新增查詢的語法如下:

from tinydb.operations import add
db.update(add(key, value))

設定查詢

此查詢用於將鍵設定為資料的值。設定查詢的語法如下:

from tinydb.operations import set
db.update(set(key, value))

減量查詢

減量查詢用於減少鍵的值。減量查詢的語法如下:

from tinydb.operations import decrement
db.update(decrement(key))

減去查詢

減去查詢用於從鍵的值中減去值。減去查詢的語法如下:

from tinydb.operations import subtract
db.update(subtract(key, value))

刪除查詢

刪除查詢用於從文件中刪除鍵。刪除查詢的語法如下:

from tinydb.operations import delete
db.update(delete(key))

讓我們舉幾個例子來演示如何將這些操作與update查詢一起使用。我們將使用我們在所有先前章節中使用的相同的student資料庫。

示例 1

讓我們看看如何在我們的student表中增加學生的成績:

from tinydb import TinyDB, Query
db = TinyDB('student.json')
from tinydb.operations import increment
db.update(increment('mark'), Query().mark == 275)

它將產生以下輸出

[5]

以上輸出顯示它已更新文件 ID 為 5 的記錄。

示例 2

讓我們看看如何在我們的student表中向學生的成績新增 5 分:

from tinydb import TinyDB, Query
db = TinyDB('student.json')
from tinydb.operations import add
db.update(add('mark', 5), Query().mark == 200)

它將產生以下輸出

[4]

以上輸出顯示它已更新文件 ID 為 4 的記錄。

示例 3

讓我們看看如何在我們的student表中將學生的成績從 250 設定為 259:

from tinydb import TinyDB, Query
db = TinyDB('student.json')
from tinydb.operations import add
db.update(add('mark', 259), Query().mark == 250)

它將產生以下輸出

[1]

以上輸出顯示它已更新文件 ID 為 1 的記錄。

示例 4

讓我們看看如何在我們的student表中減少學生的成績:

from tinydb import TinyDB, Query
db = TinyDB('student.json')
from tinydb.operations import decrement
db.update(decrement('mark'), Query().mark == 205)

它將產生以下輸出

[4]

以上輸出顯示它已更新文件 ID 為 4 的記錄。

示例 5

讓我們看看如何在我們的student表中從學生的成績減去 5 分:

from tinydb import TinyDB, Query
db = TinyDB('student.json')
from tinydb.operations import add
db.update(add('mark', 5), Query().mark == 204)

它將產生以下輸出

[4]

以上輸出顯示它已更新文件 ID 為 4 的記錄。

示例 6

讓我們看看如何在我們的 student 表中從學生的成績減去 5 分:

from tinydb import TinyDB, Query
db = TinyDB('student.json')
from tinydb.operations import delete
db.update(delete('mark'), Query().mark == 209)

它將產生以下輸出

[4]

以上輸出顯示它已更新文件 ID 為 4 的記錄。它將刪除資料庫中值為 209 的 mark 欄位。

示例 7

讓我們看看如何使用單個查詢更新表中的多個值:

from tinydb import TinyDB, Query
db = TinyDB('student.json')
from tinydb import where
db.update_multiple([
   ({'st_name':'Eliana'}, where ('roll_number')==1),
   ({'mark':20}, where ('roll_number') ==2)
])

它將產生以下輸出

[1,2]

以上輸出顯示它已更新文件 ID 為 1 和 2 的兩條記錄。

廣告