HomeLập trìnhPythonCách bắt đầu...

Cách bắt đầu với TinyDB bằng Python


Trong khi làm việc với các dự án cá nhân, bạn thường cần lưu trữ một số dữ liệu. Bạn có thể sử dụng cơ sở dữ liệu SQL hoặc NoSQL với máy chủ, nhưng điều đó sẽ yêu cầu bạn thực hiện một chút thiết lập.

Trong bài viết này, chúng ta sẽ tìm hiểu về TinyDB và cách sử dụng nó để lưu trữ dữ liệu của chúng ta ở định dạng JSON.

TinyDB là gì?

TinyDB là một cơ sở dữ liệu hướng tài liệu được viết bằng Python thuần túy không có phụ thuộc bên ngoài.

Nó được thiết kế để sử dụng dễ dàng và thú vị bằng cách cung cấp API đơn giản và rõ ràng. Nó khá đơn giản để tìm hiểu và thiết lập, ngay cả đối với người mới bắt đầu.

Khi nào không sử dụng TinyDB

Như đã đề cập trong chính tài liệu TinyDB, không phải lúc nào nó cũng là lựa chọn phù hợp cho các dự án của bạn. Nếu bạn cần các tính năng nâng cao như:

  • truy cập từ nhiều quy trình hoặc luồng,
  • tạo chỉ mục cho các bảng,
  • một máy chủ HTTP,
  • quản lý các mối quan hệ giữa các bảng hoặc tương tự,
  • ACID đảm bảo.

TinyDB là cơ sở dữ liệu không phù hợp với bạn. Trong những trường hợp đó, hãy cân nhắc sử dụng cơ sở dữ liệu như SQLite, Buzhug, CodernityDB hoặc MongoDB.

Cách cài đặt TinyDB

Việc cài đặt TinyDB cực kỳ dễ dàng. Chỉ cần chạy lệnh này trong thiết bị đầu cuối của bạn:

pip install tinydb

Cách sử dụng TinyDB

Hãy xem xét một ví dụ về Ứng dụng Todo nơi chúng ta chỉ cần thực hiện các thao tác CRUD. Bây giờ chúng ta đã cài đặt TinyDB, hãy xem cách chúng ta có thể lưu trữ dữ liệu của mình bằng TinyDB. TinyDB làm mọi thứ bằng JSON.

Đọc thêm  Danh sách sắp xếp Python – Cách sắp xếp theo thứ tự giảm dần hoặc tăng dần

Điều đầu tiên chúng ta sẽ làm là nhập các lớp cần thiết từ tinydb mô-đun. Vì vậy, hãy kích hoạt trình bao Python của bạn để viết mã.

$ python
Python 3.9.7 (tags/v3.9.7:1016ef3, Aug 30 2021, 20:19:38) [MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> 

Bây giờ chúng tôi đã sẵn sàng để viết mã.

>>> from tinydb import TinyDB       
>>> db = TinyDB("todo_db.json")
>>> 

Chúng tôi đã tạo một ví dụ về TinyDB class và chuyển tên tệp cho nó. Điều này sẽ tạo một tệp JSON todo_app.json nơi dữ liệu của chúng tôi sẽ được lưu trữ.

Cách Chèn Dữ liệu vào TinyDB

Khi chúng ta xử lý JSON, dữ liệu được thêm vào sẽ không có gì khác ngoài Từ điển Python. Vì vậy, hãy xem cách chúng ta có thể chèn một mục:

>>> new_item = {"name": "Book", "quantity": 5}
>>> db.insert(new_item) 
1
>>> 

Trước hết, chúng tôi đã tạo một từ điển mới gọi là new_item với namequantity đặt thành Book5, tương ứng. Sau đó, chúng tôi đã sử dụng insert() phương pháp trong TinyDB class để chèn dữ liệu vào cơ sở dữ liệu. Các insert() phương thức trả về id của đối tượng vừa tạo.

Ở giai đoạn này, một tệp JSON mới có tên todo_db.json sẽ được tạo và sau khi dữ liệu được chèn vào. Nó sẽ trông giống thế này:

{"_default": {"1": {"name": "Book", "quantity": 5}}}

Nếu bạn nhìn kỹ hơn, _default là tên của bảng (đặt mặc định nhưng có thể thay đổi), 1 là id của đối tượng mới tạo, và giá trị của nó là dữ liệu chúng ta vừa chèn vào. Vì vậy, về cơ bản nó chỉ là một từ điển lồng nhau.

Chúng tôi cũng có thể chèn nhiều mục cùng một lúc như thế này:

>>> items = [
...         {"name": "Cake", "quantity": 1},
...         {"name": "Candles", "quantity": 10},
...         {"name": "Balloons", "quantity": 50}
...     ]
>>> db.insert_multiple(items)   
[2, 3, 4]

Trong trường hợp này, chúng tôi đã tạo một danh sách các từ điển có tên items và đã sử dụng insert_multiple()phương pháp để chèn các mục. Phương thức này cũng trả về một danh sách ids của các đối tượng được chèn vào.

Đọc thêm  Quét web bằng Python – Cách cạo trang web thương mại điện tử bằng Beautiful Soup và Pandas

Các todo_db.json tập tin bây giờ trông như thế này:

{
  "_default": {
    "1": { "name": "Book", "quantity": 5 },
    "2": { "name": "Cake", "quantity": 1 },
    "3": { "name": "Candles", "quantity": 10 },
    "4": { "name": "Balloons", "quantity": 50 }
  }
}

Cách lấy dữ liệu từ TinyDB

Có một số cách để truy xuất dữ liệu từ cơ sở dữ liệu của bạn. Nhưng bạn sẽ cần tạo một phiên bản của Truy vấn lớp đầu tiên. Vì vậy, hãy làm điều đó:

>>> from tinydb import Query
>>> Todo = Query()
>>> 

Bạn có thể dùng db.search() phương pháp lấy dữ liệu.

>>> db.search(Todo.name == 'Book')
[{'name': 'Book', 'quantity': 5}]
>>> db.search(Todo.name == 'Copies') 
[]
>>>

Các search() phương thức trả về danh sách các mục phù hợp với truy vấn. Nếu không có mục nào như vậy, nó sẽ trả về một danh sách trống.

Chúng ta cũng có thể sử dụng get() phương pháp để có được một mục.

>>> db.get(Todo.name == 'Book')
{'name': 'Book', 'quantity': 5}
>>> db.get(Todo.name == 'Copies') 
>>> 

Các get() phương thức chỉ trả về một tài liệu phù hợp. Nếu không có tài liệu nào phù hợp, nó sẽ trả về None.

Để kiểm tra xem một tài liệu có tồn tại trong cơ sở dữ liệu hay không, chúng tôi sử dụng contains() phương pháp.

>>> db.contains(Todo.name == 'Copies') 
False
>>> db.contains(Todo.name == 'Book')   
True
>>>

Chúng tôi cũng có thể nhận được số lượng tài liệu phù hợp với truy vấn của mình bằng cách sử dụng count() phương pháp.

>>> db.insert({"name": "Balloons", "quantity": 500}) 
5
>>> db.count(Todo.name == 'Balloons') 
2
>>> 

Để có được tổng số tài liệu được lưu trữ trong cơ sở dữ liệu, chúng tôi sử dụng len() phương pháp.

>>> len(db)
5
>>>

Để lấy tất cả các tài liệu trong cơ sở dữ liệu, chúng ta có thể sử dụng all() phương pháp:

>>> db.all()
[{'name': 'Book', 'quantity': 5}, {'name': 'Cake', 'quantity': 1}, {'name': 'Candles', 'quantity': 10}, {'name': 'Balloons', 'quantity': 50}, {'name': 'Balloons', 'quantity': 500}]
>>>

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

Các update() phương thức lấy các trường mà các tài liệu phù hợp sẽ có hoặc một phương thức sẽ cập nhật các tài liệu. Nó cũng có thể lấy một điều kiện để truy vấn một đối số một cách tùy ý.

Đọc thêm  Tìm hiểu đánh máy bằng Python trong năm phút

Để cập nhật tài liệu khớp với truy vấn, chúng tôi có thể thực hiện việc này:

>>> db.update({'name': 'Books'}, Todo.name == 'Book')
[1]
>>>

Ở đây, chúng tôi đã cập nhật tên của tài liệu thành Books (tên của nó là Book ở trên).

Đôi khi, chúng tôi cần cập nhật tất cả các tài liệu. Trong trường hợp đó, chúng tôi không viết đối số truy vấn.

>>> db.update({'quantity': 10}) 
[1, 2, 3, 4, 5]
>>> db.all()
[{'name': 'Books', 'quantity': 10}, {'name': 'Cake', 'quantity': 10}, {'name': 'Candles', 'quantity': 10}, {'name': 'Balloons', 'quantity': 10}, {'name': 'Balloons', 'quantity': 10}]
>>> 

Chúng tôi đã cập nhật số lượng của tất cả các tài liệu để 10.

Cách xóa dữ liệu trong TinyDB

Để xóa tài liệu khỏi cơ sở dữ liệu, chúng tôi sử dụng remove() phương pháp. Phương pháp này có một điều kiện tùy chọn và danh sách id tài liệu tùy chọn. Nếu điều kiện phù hợp, tài liệu sẽ bị xóa.

>>> db.remove(Todo.name == 'Cake')                              
[2]
>>> db.all()                      
[{'name': 'Books', 'quantity': 10}, {'name': 'Candles', 'quantity': 10}, {'name': 'Balloons', 'quantity': 10}, {'name': 'Balloons', 'quantity': 10}]
>>> db.remove(Todo.name == 'Copies')
[]
>>> 

Để xóa tài liệu bằng id tài liệu, chúng ta có thể viết mã này:

>>> db.remove(doc_ids=[4,5]) 
[4, 5]
>>> db.all()
[{'name': 'Books', 'quantity': 10}, {'name': 'Candles', 'quantity': 10}]
>>>

Để xóa mọi thứ khỏi cơ sở dữ liệu, chúng ta có thể sử dụng truncate() phương pháp:

>>> db.truncate()
>>> db.all()
[]
>>>

kết thúc

Trong bài viết này, chúng ta đã nói về TinyDB và cách thực hiện các thao tác CRUD trên cơ sở dữ liệu.

Đây chỉ là một hướng dẫn cơ bản. Để tìm hiểu thêm về cách sử dụng nâng cao của TinyDB, bạn có thể xem qua tài liệu chính thức của nó.

Cảm ơn vì đã đọc!

Đăng ký nhận bản tin của tôi



Zik.vn – Biên dịch & Biên soạn Lại

spot_img

Create a website from scratch

Just drag and drop elements in a page to get started with Newspaper Theme.

Buy Now ⟶

Bài viết liên quang

DMCA.com Protection Status