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:

Câu lệnh

Câu lệnh "where" trong TinyDB

Truy vấn dữ liệu TinyDB

Truy vấn dữ liệu TinyDB

Xóa dữ liệu trong TinyDB

Xóa dữ liệu trong TinyDB

Cập nhật dữ liệu trong TinyDB

Cập nhật dữ liệu trong TinyDB

Truy xuất dữ liệu trong TinyDB

Truy xuất dữ liệu trong TinyDB

Chèn dữ liệu vào TinyDB

Chèn dữ liệu vào TinyDB

Hướng dẫn cài đặt và sử dụng TinyDB

Hướng dẫn cài đặt và sử dụng TinyDB

TinyDB là gì? Tìm hiểu về TinyDB

TinyDB là gì? Tìm hiểu về TinyDB

Top