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.

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.

Thiết lập ID tăng tự động với Identity trong SQL Server
Khóa ngoại (Foreign Key) trong MySQL
Mô hình thực thể mối kết hợp (ER)
Gộp dữ liệu với UNION và UNION ALL trong SQL
Hàm Hàm TO_DATE trong Oracle
Cách khai báo biến trong PHP, các loại biến thường gặp
Download và cài đặt Vertrigo Server
Thẻ li trong HTML
Thẻ article trong HTML5
Cấu trúc HTML5: Cách tạo template HTML5 đầu tiên
Cách dùng thẻ img trong HTML và các thuộc tính của img
Thẻ a trong HTML và các thuộc tính của thẻ a thường dùng