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