Hướng dẫn tinydb python - trăn nhỏ xíu

Hướng dẫn tinydb python - trăn nhỏ xíu

Trong khi làm việc trên các dự án cá nhân của bạn, bạn sẽ 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 NoQuery 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 tôi sẽ tìm hiểu về Tinydb và cách sử dụng nó để lưu trữ dữ liệu của chúng tôi ở định dạng JSON.

Tinydb là gì?

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

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

Khi không sử dụng TinydB

Như đã đề cập trong chính tài liệu Tinydb, nó không phải lúc nào cũng là lựa chọn đúng đắn 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 chủ đề,
  • Tạo chỉ mục cho các bảng,
  • một máy chủ HTTP,
  • quản lý mối quan hệ giữa các bảng hoặc tương tự,
  • Đảm bảo axit.

Tinydb là cơ sở dữ liệu sai cho bạn. Trong những trường hợp đó, hãy xem xét sử dụng các cơ sở dữ liệu như SQLite, Buzhug, CodernityDB hoặc MongoDB.

Cách cài đặt Tinydb

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

pip install tinydb

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

Điều đầu tiên chúng tôi sẽ làm là nhập các lớp cần thiết từ mô -đun

$ 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.
>>> 
9. Vì vậy, hãy kích hoạt vỏ Python của bạn để mã theo.

$ 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 để mã.

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

Chúng tôi đã tạo ra một ví dụ của lớp Tinydb và chuyển tên tệp cho nó. Điều này sẽ tạo một tệp JSON

>>> from tinydb import TinyDB       
>>> db = TinyDB("todo_db.json")
>>> 
0 nơi dữ liệu của chúng tôi sẽ được lưu trữ.

Cách chèn dữ liệu trong TinydB

Khi chúng tôi đang đối phó với JSON, dữ liệu sẽ được thêm vào sẽ không có gì ngoài một từ điển Python. Vì vậy, hãy xem làm thế nào 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à

>>> from tinydb import TinyDB       
>>> db = TinyDB("todo_db.json")
>>> 
1 với
>>> from tinydb import TinyDB       
>>> db = TinyDB("todo_db.json")
>>> 
2 và
>>> from tinydb import TinyDB       
>>> db = TinyDB("todo_db.json")
>>> 
3 được đặt thành
>>> from tinydb import TinyDB       
>>> db = TinyDB("todo_db.json")
>>> 
4 và
>>> from tinydb import TinyDB       
>>> db = TinyDB("todo_db.json")
>>> 
5, tương ứng. Sau đó, chúng tôi đã sử dụng phương thức
>>> from tinydb import TinyDB       
>>> db = TinyDB("todo_db.json")
>>> 
6 trong lớp Tinydb để chèn dữ liệu vào cơ sở dữ liệu. Phương thức
>>> from tinydb import TinyDB       
>>> db = TinyDB("todo_db.json")
>>> 
6 trả về
>>> from tinydb import TinyDB       
>>> db = TinyDB("todo_db.json")
>>> 
8 của đối tượng mới được tạo.

Ở giai đoạn này, một tệp JSON mới có tên

>>> from tinydb import TinyDB       
>>> db = TinyDB("todo_db.json")
>>> 
9 sẽ được tạo và sau khi dữ liệu được chèn. Nó sẽ trông giống thế này:

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

Nếu bạn xem xét kỹ hơn,

>>> new_item = {"name": "Book", "quantity": 5}
>>> db.insert(new_item) 
1
>>> 
0 là tên của bảng (được đặt theo mặc định nhưng có thể thay đổi), & nbsp; ________ 31 là ID của đối tượng mới được tạo và giá trị của nó là dữ liệu chúng tôi vừa chèn. Vì vậy, về cơ bản nó chỉ là một từ điển lồng nhau.

Chúng ta cũng có thể chèn nhiều mục tại một thời điểm 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 gọi là

>>> new_item = {"name": "Book", "quantity": 5}
>>> db.insert(new_item) 
1
>>> 
2 và sử dụng
>>> new_item = {"name": "Book", "quantity": 5}
>>> db.insert(new_item) 
1
>>> 
3Method để chèn các mục. Phương pháp này cũng trả về một danh sách
>>> from tinydb import TinyDB       
>>> db = TinyDB("todo_db.json")
>>> 
8 của các đối tượng được chèn.

Tệp

>>> from tinydb import TinyDB       
>>> db = TinyDB("todo_db.json")
>>> 
9 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 để lấy dữ liệu từ cơ sở dữ liệu của bạn. Nhưng bạn sẽ cần tạo một thể hiện của lớp truy vấn trước. Vì vậy, hãy làm điều đó:

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

Bạn có thể sử dụng phương thức

>>> new_item = {"name": "Book", "quantity": 5}
>>> db.insert(new_item) 
1
>>> 
6 để truy xuất dữ liệu.

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

Phương thức

>>> new_item = {"name": "Book", "quantity": 5}
>>> db.insert(new_item) 
1
>>> 
7 trả về danh sách các mục phù hợp với truy vấn. Nếu không có mục như vậy, nó sẽ trả về một danh sách trống.

Chúng tôi cũng có thể sử dụng phương thức

>>> new_item = {"name": "Book", "quantity": 5}
>>> db.insert(new_item) 
1
>>> 
8 để có được một mục.

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

Phương thức

>>> new_item = {"name": "Book", "quantity": 5}
>>> db.insert(new_item) 
1
>>> 
8 chỉ trả về một tài liệu phù hợp. Nếu không có tài liệu nào được khớp, nó sẽ trả về
{"_default": {"1": {"name": "Book", "quantity": 5}}}
0.

Để 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 phương thức

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

$ 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.
>>> 
0

Chúng tôi cũng có thể nhận được số lượng tài liệu khớp với truy vấn của chúng tôi bằng phương pháp

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

$ 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.
>>> 
1

Để 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 phương thức

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

$ 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.
>>> 
2

Để có được tất cả các tài liệu trong cơ sở dữ liệu, chúng tôi có thể sử dụng phương thức

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

$ 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.
>>> 
3

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

Phương thức

{"_default": {"1": {"name": "Book", "quantity": 5}}}
5 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ể có một điều kiện để truy vấn một đối số tùy chọn.

Để cập nhật tài liệu khớp với truy vấn, chúng ta có thể làm điều này:

$ 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.
>>> 
4

Ở đây, chúng tôi đã cập nhật tên của tài liệu lên

{"_default": {"1": {"name": "Book", "quantity": 5}}}
6 (tên của nó là
>>> from tinydb import TinyDB       
>>> db = TinyDB("todo_db.json")
>>> 
4 ở trên).

Đôi khi, chúng ta 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.

$ 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.
>>> 
5

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

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

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 phương thức

{"_default": {"1": {"name": "Book", "quantity": 5}}}
9. Phương pháp này có một điều kiện tùy chọn và một danh sách tùy chọn của ID tài liệu. Nếu điều kiện được khớp, tài liệu sẽ bị xóa.

$ 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.
>>> 
6

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

$ 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.
>>> 
7

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

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

$ 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.
>>> 
8

Gói lên

Trong bài viết này, chúng tôi đã nói về Tinydb và cách thực hiện các hoạt động 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


Học mã miễn phí.Chương trình giảng dạy nguồn mở của Freecodecamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển.Bắt đầu