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

Extend TinyDB trong TinyDB

TinyDB là một thư viện cơ sở dữ liệu nhỏ gọn và linh hoạt dành cho Python, cho phép lưu trữ dữ liệu một cách dễ dàng mà không cần đến hệ quản trị cơ sở dữ liệu phức tạp. Bên cạnh tính năng cơ bản, TinyDB còn cung cấp khả năng mở rộng và tùy chỉnh, cho phép người dùng điều chỉnh cách thức hoạt động của cơ sở dữ liệu. Trong bài viết này, mình sẽ cùng tìm hiểu các phương pháp để mở rộng TinyDB, bao gồm việc sử dụng middleware tùy chỉnh, lưu trữ tùy chỉnh, hooks và overrides, cũng như kế thừa TinyDB và các bảng dữ liệu.

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.

TinyDB cho phép mở rộng và tùy chỉnh hành vi của nó. Có bốn cách chính để thực hiện điều này:

  • Middleware tùy chỉnh
  • Lưu trữ tùy chỉnh (Custom storages)
  • Hooks và overrides
  • Kế thừa (Subclassing) TinyDB và Table

Trong phần này, mình sẽ tìm hiểu chi tiết từng phương pháp.

Middleware tùy chỉnh trong TinyDB

Đôi khi người dùng không muốn tạo một module lưu trữ mới mà chỉ cần thay đổi cách thức hoạt động của module lưu trữ hiện tại. Trong trường hợp này, người dùng có thể sử dụng middleware để tùy chỉnh hành vi của cơ sở dữ liệu. Ví dụ, chúng ta sẽ tạo một middleware lọc bỏ các mục trống.

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

Dữ liệu trước khi đi qua middleware tùy chỉnh:

{
   '_default': {
      1: {'key1': 'value1'},
      2: {'key2': 'value2'},
      ...,
      N: {'keyN': 'valueN'}
   }
}

Cách triển khai middleware tùy chỉnh:

class RemoveEmptyItemsMiddleware(Middleware):
    def __init__(self, storage_cls):
        super(self).__init__(storage_cls)
    
    def read(self):
        data = self.storage.read()
        for _default in data:
            st_name = data
        for doc_id in table:
            item = st_name
            if item == {}:
                del st_name
        return data
    
    def close(self):
        self.storage.close()

Middleware này sẽ lọc bỏ những mục trống trước khi dữ liệu được lưu trữ.

Lưu trữ tùy chỉnh trong TinyDB

Như đã biết, TinyDB cung cấp hai loại lưu trữ: lưu trữ trong bộ nhớ (in-memory) và lưu trữ bằng file JSON. Tuy nhiên, TinyDB cũng cho phép người dùng thêm các loại lưu trữ tùy chỉnh. Ví dụ, chúng ta sẽ thêm lưu trữ YAML bằng cách sử dụng thư viện PyYAML.

Cách triển khai lưu trữ YAML:

import yaml

class YAMLStorage(Storage):
    def __init__(self, db_json):
        self.db_json = db_json 

    def read(self):
        with open(self.db_json) as handle:
            try:
                info = yaml.safe_load(handle.read())
                return info
            except yaml.YAMLError:
                return None

    def write(self, info):
        with open(self.db_json, 'w+') as handle:
            yaml.dump(info, handle)

    def close(self):
        pass

Hooks và Overrides trong TinyDB

Nếu cả lưu trữ tùy chỉnh và middleware tùy chỉnh đều không đáp ứng được nhu cầu, người dùng có thể sử dụng hooks và overrides để thay đổi hành vi của TinyDB.

Ví dụ, để cấu hình tên bảng mặc định:

TinyDB.default_table_name = 'student_detail'

Hoặc để đặt dung lượng bộ nhớ cache:

TinyDB.table_class.default_query_cache_capacity = 50

Kế thừa TinyDB và Table

Đây là phương pháp cuối cùng để tùy chỉnh TinyDB. Ví dụ, ta có thể tạo một lớp con (subclass) để ghi đè các lớp mặc định:

class ExtendTable(Table):
    TinyDB.table_class = student_detail

Kết bài

Bằng cách sử dụng các phương pháp trên, TinyDB cho phép người dùng mở rộng và tùy chỉnh cơ sở dữ liệu một cách linh hoạt, phù hợp với nhiều tình huống khác nhau. Từ việc tạo middleware đến lưu trữ tùy chỉnh, người dùng có thể dễ dàng điều chỉnh TinyDB theo nhu cầu của mình, mang lại hiệu quả cao trong việc xử lý và quản lý dữ liệu.

Cùng chuyên mục:

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

Câu lệnh

Câu lệnh "where" trong TinyDB

Top