TinyDB - 修改数据


我们已经讨论了更新查询,借助它我们可以修改值以及处理数据库中的数据。但是诸如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))

减法查询

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

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

删除查询

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

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

让我们举几个示例来演示如何将这些操作与更新查询一起使用。我们将使用前面所有章节中使用的相同学生数据库。

实施例1

让我们看看如何增加学生表中学生的分数-

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

让我们看看如何为学生表中的学生分数添加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,其中学生表中学生的分数为 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

让我们看看如何减少学生表中学生的分数-

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

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