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 的两条记录。

广告

© . All rights reserved.