TinyDB - 更新資料



TinyDB 可以儲存多種格式的資料,我們可以使用各種方法輕鬆檢索儲存的資料。但有時我們需要更新資料,為此我們可以使用update()方法。

要更新資料庫,我們首先需要建立一個Query類的例項。為此,可以使用以下命令:

from tinydb import Query
Student = Query()

這裡,Student是我們的資料庫名稱。

update() 方法

以下是 update() 方法的語法:

db.update({ updated field: updated information… }, stable field: information)

讓我們來看一個例子來理解 update() 方法是如何工作的。在這個例子中,我們將使用以下學生資料庫:

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

根據給定的資料,學號為“1”的學生姓名為“elen”。以下查詢將把學生姓名更新為“Adam”:

from tinydb import TinyDB, Query
student = Query()
db.update({'st_name' : 'Adam'}, student.roll_number == 1 )

它將返回已更新物件的ID:

[1]

現在,您可以使用 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"
   },
   {
      "roll_number":5,
      "st_name":"karan",
      "mark":275,
      "subject":"TinyDB",
      "address":"benglore"
   }
]

有時,我們需要更新資料庫中所有文件的一個或多個欄位。為此,我們可以直接使用update()方法,而不需要編寫查詢引數。以下查詢將把所有學生的地址更改為“College_Hostel”:

db.update({'address': 'College_Hostel'})

它將返回已更新物件的ID:

[1,2,3,4,5]

同樣,您可以使用 all() 方法檢視已更新的資料庫。

db.all()

它將顯示更新後的資料:

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

注意,所有行的地址欄位都具有相同的資料,即“College_Hostel”。

廣告