TinyDB - 删除数据


如果您需要从 TinyDB 数据库中永久删除一组特定数据,可以使用remove()方法来实现。与检索和更新数据一样,您首先需要创建Query类的实例来删除数据。您可以使用以下命令来实现此目的 -

from tinydb import Query
Student = Query()

这里,Student是我们数据库的名称。

移除()方法

这是remove()方法的语法 -

db.remove( Query() field regex )

remove() 方法接受可选条件以及可选的文档 ID 列表。

学生数据库

我们将使用以下学生数据库作为本章的示例。

[
   {
      "roll_number":1,
      "st_name":"elen",
      "mark":250,
      "subject":"TinyDB",
      "address":"delhi"
   },
   {
      "roll_number":2,
      "st_name":"Ram",
      "mark":[
         250,
         280
      ],
      "subject":[
         "TinyDB",
         "MySQL"
      ],
      "address":"delhi"
   },
   {
      "roll_number":3,
      "st_name":"kevin",
      "mark":[
         180,
         200
      ],
      "subject":[
         "oracle",
         "sql"
      ],
      "address":"keral"
   },
   {
      "roll_number":4,
      "st_name":"lakan",
      "mark":200,
      "subject":"MySQL",
      "address":"mumbai"
   },
   {
      "roll_number":5,
      "st_name":"karan",
      "mark":275,
      "subject":"TinyDB",
      "address":"benglore"
   }
]

示例:删除单行数据

让我们通过一个例子来理解remove()方法。

from tinydb import TinyDB, Query
student = Query()
db.remove(student.roll_number == 5)

上面的查询将删除学生学号为 5 的数据。它将返回被删除对象的 ID -

[5]

现在,我们可以使用 all() 方法来查看更新后的数据库。

db.all()

它将显示更新数据库中的数据 -

[
   {
      "roll_number":1,
      "st_name":"Adam",
      "mark":250,
      "subject":"TinyDB",
      "address":"delhi"
   },
   {
      "roll_number":2,
      "st_name":"Ram",
      "mark":[
         250,
         280
      ],
      "subject":[
         "TinyDB",
         "MySQL"
      ],
      "address":"delhi"
   },
   {
      "roll_number":3,
      "st_name":"kevin",
      "mark":[
         180,
         200
      ],
      "subject":[
         "oracle",
         "sql"
      ],
      "address":"keral"
   },
   {
      "roll_number":4,
      "st_name":"lakan",
      "mark":200,
      "subject":"MySQL",
      "address":"mumbai"
   }
]

示例:删除多行数据

如果您想一次删除多行,可以使用remove()方法,如下所示:

from tinydb import TinyDB, Query
student = Query()
db.remove(student.roll_number > 2)

它将返回已删除对象的 ID:

[3,4]

使用 all() 方法查看更新的数据库。

db.all()

它将显示更新数据库中的数据 -

[
   {
      "roll_number":1,
      "st_name":"Adam",
      "mark":250,
      "subject":"TinyDB",
      "address":"delhi"
   },
   {
      "roll_number":2,
      "st_name":"Ram",
      "mark":[
         250,
         280
      ],
      "subject":[
         "TinyDB",
         "MySQL"
      ],
      "address":"delhi"
   }
]

示例:删除整个数据

如果要从数据库中删除所有数据,可以使用truncate()方法,如下所示 -

db.truncate()

接下来,使用 all() 方法查看更新的数据库。

db.all()

它将显示一个空数据库作为输出-

[]