TinyDB - exists() 查詢



TinyDB 提供了一個高階查詢,稱為 **exists()**,用於檢查 JSON 檔案中資料是否存在。**exists()** 查詢實際上測試的是 JSON 檔案中子欄位資料的可用性。exists() 查詢基於布林條件工作。如果子欄位存在(即布林值 TRUE),它將相應地從 JSON 檔案中獲取資料,否則將返回空值。

語法

TinyDB exists() 的語法如下:

db.search(Query().field.exists())

這裡,**field** 表示我們要訪問的資料部分。**Query()** 是從 JSON 表格 **student** 建立的物件。

我們將使用之前所有章節中使用過的相同 **student** 資料庫。

示例 1

讓我們對名為 '**subject**' 的欄位使用 TinyDB **exists()** 查詢:

db.search(student.subject.exists())

此查詢將獲取所有行,因為所有行都具有“subject”欄位。

[
   {
      "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"
   }
]

示例 2

現在讓我們對 '**address**' 欄位使用 **exists()** 查詢:

db.search(student.address.exists())

它將獲取以下行:

[
   {
      "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"
   }
]

示例 3

現在,讓我們嘗試對不存在的欄位使用 **exists()** 查詢:

db.search(student.city.exists())

由於給定表中沒有任何行具有名為“city”的欄位,因此上面的 exists() 查詢將返回空值。

[]
廣告