TinyDB - 或逻辑运算



"或逻辑运算" 运算符组合多个条件,只有当其中一个条件满足时才评估为 True。TinyDB 或逻辑运算作用于数据库的两个查询。如果其中任何一个查询为 True,TinyDB 将获取所需数据。另一方面,如果两个查询都为 False,它将返回一个空白。

语法

TinyDB **或逻辑运算** 的语法如下所示:

db.search((Query().(query1) | (Query().(query2) 

这里,**field** 表示我们要访问的数据部分。**Query()** 是我们名为 **student** 的 JSON 表格创建的对象。如果满足任何一个条件,它将获取数据,否则将返回空白。

让我们来看几个例子,看看它是如何工作的。我们将使用我们在前面所有章节中使用过的相同的 **student** 数据库。

示例 1

让我们看看当我们在 "st_name" 和 "subject" 字段上应用或逻辑运算并检查以下条件:"st_name=lakhan" 和 "subject=TinyDB" 时,我们的 TinyDB 学生数据库返回什么:

from tinydb import TinyDB, Query
db = TinyDB('student.json')
db.search ((Query().st_name == 'lakan') | (Query().subject == 'TinyDB')) 

此查询将获取以下行:

[
   {
      "roll_number":1,
      "st_name":"elen",
      "mark":250,
      "subject":"TinyDB",
      "address":"delhi"
   },
   {
      "roll_number":4,
      "st_name":"lakhan",
      "mark":200,
      "subject":"MySQL",
      "address":"mumbai"
   },
   {
      "roll_number":5,
      "st_name":"karan",
      "mark":275,
      "subject":"TinyDB",
      "address":"benglore"
   }
]

示例 2

在本例中,让我们在 "subject" 和 "roll_number" 字段上应用或逻辑运算:

from tinydb import TinyDB, Query
db = TinyDB('student.json')
db.search((student.subject.search('M')) | (student.roll_number < 5))

此查询将获取所有 "subject" 字段以字母 "M" 开头或 "roll_number" 小于 "5" 的行。

[
   {
      "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":"lakhan",
      "mark":200,
      "subject":"MySQL",
      "address":"mumbai"
   }
]
广告