TINYDB USEFUL RESOURCES
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Truy vấn dữ liệu TinyDB

TinyDB cung cấp một bộ công cụ truy vấn mạnh mẽ, với hai cách tiếp cận chính để xây dựng truy vấn: cách thứ nhất giống cú pháp của các công cụ ORM, và cách thứ hai là sử dụng câu lệnh "where" truyền thống.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Trong bài này, mình sẽ tìm hiểu hai cách xây dựng truy vấn trong cơ sở dữ liệu TinyDB.

Cách thứ nhất: Sử dụng Query trong TinyDB.

Cách đầu tiên giống với cú pháp của các công cụ ORM, trong đó đầu tiên chúng ta cần import lớp Query. Sau khi import, chúng ta có thể sử dụng đối tượng truy vấn này để thao tác với cơ sở dữ liệu TinyDB. Cú pháp như sau:

from tinydb import Query
student = Query()

Ở đây, student là tên của cơ sở dữ liệu chúng ta. Để hiểu rõ hơn, hãy sử dụng ví dụ với cơ sở dữ liệu sinh viên như sau:

Bài viết này được đăng tại [free tuts .net]

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

Ví dụ

Dưới đây là một truy vấn để lấy dữ liệu từ cơ sở dữ liệu sinh viên với điều kiện roll_number nhỏ hơn 3:

>>> db.search(Query().roll_number < 3)

Hoặc:

>>> student = Query()
>>> db.search(student.roll_number < 3)

Truy vấn trên sẽ trả về kết quả:

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

Đôi khi, tên trường không phải là một định danh hợp lệ trong Python. Trong trường hợp này, chúng ta sẽ không thể truy cập trường đó một cách thông thường. Để giải quyết, ta có thể sử dụng cú pháp từ điển như sau:

student = Query()

# Cú pháp không hợp lệ trong Python
db.search(student.security-code == 'ABCD')

# Sử dụng cú pháp từ điển
db.search(student['security-code'] == 'ABCD')

Cách thứ hai: Sử dụng câu lệnh "where" trong TinyDB.

Cách thứ hai là sử dụng câu lệnh "where" truyền thống để xây dựng truy vấn. Cú pháp như sau:

from tinydb import where
db.search(where('field') == 'value')

Ví dụ

Truy vấn TinyDB sử dụng câu lệnh "where" để tìm các bản ghi có môn học là MySQL:

db.search(where('subject') == 'MySQL')

Truy vấn trên sẽ trả về kết quả sau:

[
   {
      "roll_number": 4,
      "st_name": "lakan",
      "mark": 200,
      "subject": "MySQL",
      "address": "mumbai"
   }
]

Kết bài

TinyDB cung cấp hai cách mạnh mẽ và linh hoạt để thực hiện truy vấn dữ liệu, giúp chúng ta dễ dàng chọn cách tiếp cận phù hợp với từng trường hợp cụ thể. Dù sử dụng cú pháp tương tự ORM hay phương pháp truyền thống với câu lệnh "where", TinyDB vẫn đảm bảo tính đơn giản và hiệu quả trong quản lý dữ liệu.

Cùng chuyên mục:

Extend TinyDB trong TinyDB

Extend TinyDB trong TinyDB

Tìm hiểu Middleware trong TinyDB

Tìm hiểu Middleware trong TinyDB

Storage Types trong TinyDB

Storage Types trong TinyDB

Caching Query trong TinyDB

Caching Query trong TinyDB

Table mặc định trong TinyDB

Table mặc định trong TinyDB

Tìm hiểu Tables trong TinyDB

Tìm hiểu Tables trong TinyDB

ID tài liệu (Document ID) trong TinyDB

ID tài liệu (Document ID) trong TinyDB

Truy xuất dữ liệu TinyDB

Truy xuất dữ liệu TinyDB

Upserting dữ iệu trong TinyDB

Upserting dữ iệu trong TinyDB

Thao tác chỉnh sửa dữ liệu trong TinyDB

Thao tác chỉnh sửa dữ liệu trong TinyDB

Xử lý truy vấn dữ liệu trong TinyDB

Xử lý truy vấn dữ liệu trong TinyDB

Toán tử Logical OR trong TinyDB

Toán tử Logical OR trong TinyDB

Toán tử

Toán tử "Logical AND" trong TinyDB

Phủ định logic trong TinyDB

Phủ định logic trong TinyDB

Truy vấn one_of() trong TinyDB

Truy vấn one_of() trong TinyDB

Truy vấn all() trong TinyDB

Truy vấn all() trong TinyDB

Truy vấn any() trong TinyDB

Truy vấn any() trong TinyDB

Truy vấn test() trong TinyDB

Truy vấn test() trong TinyDB

Truy vấn matches() trong TinyDB

Truy vấn matches() trong TinyDB

Truy vấn exists() nâng cao trong TinyDB

Truy vấn exists() nâng cao trong TinyDB

Top