TinyDB - 修改数据

我们已经讨论了 update 查询,借助它我们可以修改值并处理数据库中的数据。 但是 update 查询(例如db.update(fields, query))允许我们通过添加或覆盖其值来更新文档。

但有时,我们想删除一个字段或需要增加其值。 在这种情况下,我们可以传递函数而不是字段。 我们可以将以下操作与更新查询 − 结合使用:

increment 增量查询

increment 增量查询,顾名思义,用于增加数据库中某个键的值。 增量查询的语法如下 −

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

add 添加查询

add 添加查询用于将值添加到键的值中。 它也适用于弦乐。 添加查询的语法如下 −

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

set 查询

该查询用于将键设置为数据的值。 set查询的语法如下 −

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

decrement 递减查询

decrement 递减查询用于递减键的值。 减量查询语法如下 −

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

subtarct 减法查询

subtarct 查询用于从键的值中减去值。 减法查询语法如下 −

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

delete 删除查询

delete 删除查询用于从文档中删除键。 删除查询的语法如下 −

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

让我们举几个示例来演示如何将这些操作与更新查询一起使用。 我们将使用与前面所有章节中使用的相同的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

让我们看看如何分数设置为 259,而 student 表中学生的分数为 250 −

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

让我们看看如何将学生表中学生的分数减去 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 的两条记录。