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

Tìm kiếm dữ liệu trong TinyDB

TinyDB cung cấp phương thức search() để hỗ trợ bạn tìm kiếm dữ liệu trong một tài liệu. Kết hợp với đối tượng Query(), phương thức search() có thể được sử dụng để tìm dữ liệu trong tệp JSON. Có nhiều cách khác nhau để sử dụng phương thức search() trong cơ sở dữ liệu TinyDB. Trong bài viết này mình sẽ tiếp tục tìm hiểu tính năng tìm kiếm theo dữ liệu trong TinyDB

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.

Tìm kiếm dựa trên sự tồn tại của trường trong TinyDB

Chúng ta có thể tìm kiếm dữ liệu từ cơ sở dữ liệu dựa trên sự tồn tại của một trường cụ thể. Hãy cùng tìm hiểu thông qua một ví dụ. Đối với ví dụ này, chúng ta sẽ sử dụng cơ sở dữ liệu sinh viên sau:

[
   {
      "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ụ

Truy vấn tìm kiếm dựa trên sự tồn tại của một trường cụ thể:'

from tinydb import Query
student = Query()
db.search(student.address.exists())

Truy vấn trên sẽ trả về dữ liệu 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"
   }
]

Tìm kiếm bằng biểu thức chính quy (Regular Expression) trong TinyDB

Chúng ta cũng có thể tìm kiếm dữ liệu dựa trên biểu thức chính quy (Regex). Hãy xem cách hoạt động thông qua một số ví dụ sau:

Ví dụ 1

Tìm kiếm toàn bộ mục phù hợp với biểu thức chính quy:

from tinydb import Query
student = Query()
db.search(student.st_name.matches('[aZ]*'))

Kết quả của truy vấn này:

[
   {
      "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ụ 2

Tìm kiếm không phân biệt chữ hoa, chữ thường:

from tinydb import Query
import re
student = Query()
db.search(student.st_name.matches('lakan', flags=re.IGNORECASE))

Kết quả trả về:

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

Ví dụ 3

Tìm kiếm bất kỳ phần nào của mục phù hợp với biểu thức chính quy:

from tinydb import Query
student = Query()
db.search(student.st_name.search('r+'))

Kết quả:

[{
   "roll_number": 5,
   "st_name": "karan",
   "mark": 275,
   "subject": "TinyDB",
   "address": "benglore"
}]

Tìm kiếm sử dụng chuỗi con (Substring) trong TinyDB

Chúng ta có thể sử dụng chuỗi con để tìm kiếm dữ liệu trong cơ sở dữ liệu TinyDB. Dưới đây là một số ví dụ:

Ví dụ 1

Truy vấn này sẽ lấy tất cả các dòng có trường "address" là "delhi":

from tinydb import Query
student = Query()
db.search(student['address'] == 'delhi')

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

Ví dụ 2

Sử dụng cú pháp khác cho phương thức search():

from tinydb import Query
student = Query()
db.search(student.address.search('mumbai'))

Truy vấn này sẽ lấy tất cả các dòng có trường "address" là "mumbai":

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

Kết bài

TinyDB cung cấp nhiều cách linh hoạt để tìm kiếm dữ liệu dựa trên các điều kiện như sự tồn tại của trường, biểu thức chính quy, và chuỗi con. Nhờ vào các phương thức này, TinyDB giúp việc quản lý và truy xuất dữ liệu trở nên đơn giản hơn trong các ứng dụng nhỏ hoặc đơn giản.

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