NỘI DUNG

Hosting tốc độ cao Vietnix - tốc độ tải trang trung bình dưới 1 giây
VPS siêu tốc Vietnix - trải nghiệm mượt mà, ổn định
14/04/2023
Lượt xem

Cách thực hiện các thao tác CRUD trong MongoDB bằng PyMongo trên Ubuntu 20.04

14/04/2023
10 phút đọc
Lượt xem

Đánh giá

5/5 - (140 votes)

Cùng Vietnix khám phá cách thực hiện các thao tác CRUD trong MongoDB bằng PyMongo trên Ubuntu 20.04 như thế nào. CRUD là viết tắt của 4 từ trong tiếng Anh: Create, Read, Update, Delete. CRUD là 4 tính năng quan trọng để làm việc với Database. Trong bài viết này, bạn sẽ được hướng dẫn viết một script Python để tạo, truy xuất, cập nhật và xóa dữ liệu trong máy chủ MongoDB được cài đặt trên Ubuntu 20.04. Sau đó, bạn sẽ có thể hiểu được cách dữ liệu di chuyển qua MongoDB và ứng dụng Python.

Giới thiệu MongoDB và PyMongo

MongoDB là một chương trình cơ sở dữ liệu NoSQL document-oriented dùng document giống JSON để lưu trữ dữ liệu. Không giống mối quan hệ bảng được sử dụng trong cơ sở dữ liệu quan hệ, document giống JSON làm các schema đơn giản và linh hoạt hơn. Nhìn chung, cơ sở dữ liệu NoSQL có khả năng mở rộng theo chiều ngang phù hợp cho dữ liệu lớn và các ứng dụng thời gian thực.

Database driver hoặc connector là chương trình kết nối ứng dụng với một chương trình cơ sở dữ liệu. Để thực hiện các hoạt động CRUD trong MongoDB bằng Python thì cần có trình điều khiển để thiết lập kênh truyền thông. PyMongo là trình điều khiển được gợi ý để làm việc với MongoDB từ Python.

Chuẩn bị gì để thao tác CRUD trong MongoDB bằng PyMongo trên Ubuntu 20.04

Để thực hiện được các bước trong bài viết này, bạn cần chuẩn bị:

Nếu bạn cần sở hữu máy chủ để cài đặt MongoDB, Python 3, hãy tham khảo dịch vụ VPS tại Vietnix. Các gói VPS của Vietnix đều có cấu hình từ 1GB RAM trở lên, đảm bảo đáp ứng được yêu cầu cho việc cài đặt các ứng dụng này.

Bên cạnh đó, VPS của Vietnix cũng hỗ trợ nhiều hệ điều hành khác nhau, trong đó Ubuntu 20.04. Điều này cho phép bạn lựa chọn hệ điều hành phù hợp với nhu cầu sử dụng của mình.

Liên hệ ngay với Vietnix để được tư vấn lựa chọn VPS tốc độ cao và ổn định để triển khai các ứng dụng của bạn.

Bước 1: Cài đặt PyMongo

PyMongo là một bộ công cụ để làm việc với MongoDB. Công cụ này hỗ trợ database requests bằng cách sử dụng câu lệnh và interface từ Python.

Để kích hoạt PyMongo, bạn hãy mở cửa sổ terminal trên Ubuntu và cài đặt từ Python Package Index. Bạn nên cài đặt PyMongo trong một môi trường ảo để có thể cô lập dự án Python.

pip3 install pymongo

pip3 là phiên bản Python 3 của pip. Đây là trình cài đặt gói phổ biến cho Python. Lưu ý rằng trong môi trường ảo Python 3, bạn có thể sử dụng lệnh pip thay vì pip3.

Bạn hãy mở trình thông dịch Python bằng lệnh dưới đây. Trình thông dịch là máy ảo hoạt động như một shell Unix. Đây là nơi bạn có thể thấy code chạy Python một cách trực quan.

python3

Bạn đang ở trong trình thông dịch khi nhận được output như sau:

Output

Python 3.8.5 (default, Jan 27 2021, 15:41:15)

[GCC 9.3.0] on linux

Type "help", "copyright", "credits" or "license" for more information.

Tiếp theo, bạn nhập pymongo trong trình thông dịch Python:

import pymongo

Khi sử dụng lệnh import, bạn có thể truy cập vào module pymongo và mã code trong terminal. Lệnh import sẽ chạy mà không xảy ra những ngoại lệ.

Ở dòng tiếp theo, nhập import getpass:

from getpass import getpass

getpass là một module để quản lý mật khẩu nhập vào. Module này yêu cầu bạn nhập mật khẩu và không hiển thị những gì bạn đã nhập. Module cung cấp cơ chế bảo mật để ngăn chặn hiển thị mật khẩu dưới dạng plaintext.

Ở đây, bạn thiết lập kết nối với MongoClient để kích hoạt MongoDB của cơ sở dữ liệu. Khai báo biến client để chứa MongoClient instance với các đối số là host, username, passwordauthMechanism:

client = pymongo.MongoClient('localhost', username='username', password=getpass('Password: '), authMechanism='SCRAM-SHA-256')

Để kết nối đến MongoDB khi bật chế độ xác thực, MongoClient yêu cầu bốn đối số:

  • host – tên máy chủ nơi MongoDB được cài đặt. Trong trường hợp này, bạn đang sử dụng localhost.
  • username và password – các thông tin xác thực được tạo sau khi bật chế độ xác thực trong MongoDB.
  • authMechanism – SCRAM-SHA-256 là cơ chế xác thực mặc định được hỗ trợ bởi một nhóm cấu hình xác thực cho MongoDB 4.0 trở lên.

Sau khi đã thiết lập kết nối, bạn có thể tương tác với MongoDB của mình.

Bước 2: Kiểm thử Database và Collection

MongoDB hỗ trợ quản lý nhiều database độc lập trong MongoClient. Bạn có thể truy cập hoặc tạo database bằng cách sử dụng các kiểu thuộc tính trên MongoClient. Khai báo biến db và gán database mới như một thuộc tính của client:

db = client.workplace

Trong bài viết này, cơ sở dữ liệu workplace là nơi bạn theo dõi các hồ sơ của employee (nhân viên). Bạn sẽ thêm vào hồ sơ các mục như name (tên) và role (vai trò) của employee.

Tiếp theo, tạo một collection giống như các bảng trong cơ sở dữ liệu quan hệ. Các collection lưu trữ một nhóm các document trong MongoDB. Trong trình thông dịch Python, bạn tạo một collection có tên employees làm một thuộc tính của db. Sau đó, gán cho một biến có tên tương tự:

employees = db.employees

Lưu ý: Trong MongoDB, database và collection được tạo ra chậm. Các đoạn code trên sẽ không được thực thi cho đến khi tạo ra document đầu tiên

Bước 3: Thực hiện các hoạt động CRUD

Ở bước này, bạn sẽ thực hiện các hoạt động CRUD để thao tác với dữ liệu trong MongoDB. CRUD (Create, Retrieve, Update, Delete) là bốn hoạt động cơ bản trong lập trình để lưu trữ liên tục.

Để biểu diễn dữ liệu trong Python dưới dạng các document giống như JSON thì cần sử dụng từ điển. Hãy tạo một hồ sơ employee mẫu với các thuộc tính name và role:

employee = {

"name": "Sammy",

"role": "Developer"

}

Như bạn có thể thấy, từ điển Python rất giống cú pháp của document JSON. PyMongo chuyển đổi từ điển Python thành các document JSON để mở rộng khả năng lưu trữ dữ liệu.

Ở bước này, bạn thực hiện chèn hồ sơ employee vào trong collection có tên employees:

employees.insert_one(employee)

Lệnh này gọi phương thức insert_one() trên collection employees và cung cấp hồ sơ employee để chèn. Nếu thành công, kết quả chèn sẽ trả về output tương tự như dưới đây:

Output

<pymongo.results.InsertOneResult object at 0x7f8c5e3ed1c0>

Tiếp theo, để kiểm tra chèn bản ghi employee thành công và collection đang tồn tại, bạn hãy thực hiện truy vấn tìm employee vừa tạo:

employees.find_one({"name": "Sammy"})

Lệnh này gọi phương thức find_one() trên collection employees. Truy vấn theo thuộc tính name sẽ trả về một document phù hợp. Phương thức này rất hữu ích khi bạn chỉ có một document hoặc bạn chỉ quan tâm đến kết quả tìm thấy đầu tiên.

Kết quả trả về sẽ có dạng như sau

Output

{'_id': ObjectId('606ae5b2358ddf640da46894'), 'name': 'Sammy', 'role': 'D

Lưu ý: Khi một document được chèn vào, một khóa _id duy nhất được tự động thêm vào tài liệu nếu tài liệu chưa chứa khóa _id.

Nếu cần chỉnh sửa các document, bạn sử dụng phương thức update_one(). Phương thức update_one() yêu cầu hai đối số queryupdate:

  • query – {"name": "Sammy"} – PyMongo sẽ sử dụng tham số truy vấn này để tìm document có name là Sammy.
  • update – {"$set": {"role": "Technical Writer"}} – Tham số cập nhật thực hiện toán tử $set. Giá trị của một trường sẽ được thay thế bằng giá trị được chỉ định. Ở đây giá trị của trường role ban đầu sẽ được thay thế bằng Technical Writer.

Gọi phương thức update_one() trên collection employees:

employees.update_one({"name": "Sammy"}, { "$set": {"role": "Technical Writer"} })

Nếu chỉnh sửa thành công, phương thức update sẽ trả về một output có dạng như sau:

Output

<pymongo.results.UpdateResult object at 0x7f8c5e3eb940>

Để xóa một tài liệu, bạn sử dụng phương thức delete_one(). Phương thức này yêu cầu một tham số truy vấn để chỉ định tài liệu bạn muốn xóa. Sử dụng phương thức delete_one() như một thuộc tính của collection employees. Trong câu lệnh dưới, chỉ định tài liệu muốn xóa có name là Sammy.

employees.delete_one({"name": "Sammy"})

Phương thức này sẽ chỉ xóa mục bạn nhập vào và có trong collection employees.

Output

<pymongo.results.DeleteResult object at 0x7f8c5e3c8280>

Sử dụng phương thức find_one() một lần nữa để kiểm tra đã xóa thành công hồ sơ nhân viên của Sammy. Nếu không có gì được in ra trên console thì chứng tỏ bạn đã xóa thành công.

employees.find_one({"name": "Sammy"})

insert_one(), find_one(), update_one()delete_one() là những cách tuyệt vời để bạn thực hiện các thao tác CRUD trong MongoDB với PyMongo.

Lời kết

Qua bài viết cách thực hiện các thao tác CRUD trong MongoDB bằng PyMongo trên Ubuntu 20.04 này, bạn đã biết cách thiết lập trình điều khiển cơ sở dữ liệu PyMongo để kết nối code của Python với MongoDB. Bạn cũng biết cách tạo, truy xuất, cập nhật và xóa document cơ bản. Hy vọng những kiến thức trong bài viết sẽ là nền tảng để bạn có thể thực hiện nhiều thao tác mức độ cao hơn như thực hiện các lệnh chèn hàng loạt, truy vấn nhiều document,… Nếu gặp phải bất cứ khó khăn gì khi thao tác, bạn hãy để lại bình luận dưới bài viết nhé.

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Chọn chủ đề :

Hưng Nguyễn

Co-Founder
tại

Kết nối với mình qua

Kết nối với mình qua

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments

Tăng tốc độ website - Nâng tầm giá trị thương hiệu

Banner group
Tăng tốc tải trang

95 điểm

Nâng cao trải nghiệm người dùng

Tăng 8% tỷ lệ chuyển đổi

Thúc đẩy SEO, Google Ads hiệu quả

Tăng tốc ngay

SẢN PHẨM NỔI BẬT

Pattern

7 NGÀY DÙNG THỬ HOSTING

NẮM BẮT CƠ HỘI, THÀNH CÔNG DẪN LỐI

Cùng trải nghiệm dịch vụ hosting tốc độ cao được hơn 100,000 khách hàng sử dụng

Icon
ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1
Icon
XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG