Sẵn sàng kết nối cụm MongoDB với dự án Python của bạn chưa? Bạn gặp may rồi. Trong hướng dẫn này, bạn sẽ biết PyMongo là gì, vì sao đây là gói ưu tiên cho lập trình viên Python khi làm việc với MongoDB làm cơ sở dữ liệu, và cách thiết lập kết nối đầu tiên một cách nhanh gọn nhất.
Vậy chính xác thì gói Python PyMongo là gì? Đây là trình điều khiển Python chính thức của MongoDB, cho phép nhà phát triển kết nối, truy vấn và tương tác giữa ứng dụng Python và cơ sở dữ liệu MongoDB.
Đây là cách thức được khuyến nghị để tương tác với cơ sở dữ liệu MongoDB từ Python, và rất phù hợp để xây dựng nhiều ứng dụng web nhờ khả năng tương thích với Flask và Django. Nó thực sự giúp lập trình viên Python khai thác tối đa MongoDB trong nhiều ứng dụng khác nhau.
Hãy cùng bắt đầu với PyMongo bằng cách chạy một ứng dụng người dùng mẫu CRUD (tạo, đọc, cập nhật, xóa) để thấy việc khởi động với lượng mã tối thiểu dễ dàng thế nào!
Yêu cầu để thành công
Để theo dõi hướng dẫn này suôn sẻ, vui lòng đảm bảo bạn có các điều kiện tiên quyết sau:
Một tài khoản MongoDB Atlas
Một IDE tùy chọn (hướng dẫn này dùng sổ tay Google Colab)
Python 3.6+
pip đã được cài đặt (nếu bạn dùng IDE khác với sổ tay Google Colab).
Thiết lập một cụm MongoDB
Trước khi kết nối cơ sở dữ liệu MongoDB với dự án Python, chúng ta cần tạo một cụm! Để làm điều này, hãy đăng nhập vào tài khoản MongoDB Atlas và tạo một dự án mới nếu bạn chưa có.
Sau đó, hãy tạo một cụm trong dự án.
Giờ bạn đã sẵn sàng triển khai cụm. Nhấp vào gói “Free” (miễn phí mãi mãi!) và đặt tên cho cụm hoặc giữ nguyên tên mặc định.
Lưu ý rằng sau khi chọn tên cho cụm, bạn sẽ không thể đổi lại. Chọn nhà cung cấp đám mây (AWS, Google Cloud hoặc Azure) và đảm bảo bạn đang ở đúng khu vực.
Nhấp nút xanh “Create Deployment”, và chúng ta sẵn sàng tiếp tục.
Bạn sẽ được yêu cầu chọn “Username” và “Password” cho cụm. Hãy chọn thông tin dễ nhớ (nhưng không dễ đoán như trong hướng dẫn này!) và an toàn, vì bạn sẽ cần chúng mỗi khi truy cập Chuỗi kết nối (Connection String).
Nhớ nhấp vào nút “Preload sample dataset” để thao tác dễ dàng hơn. Thao tác này sẽ tự động nạp bộ dữ liệu mẫu “sample_mflix” mà chúng ta sẽ sử dụng.
Nhấp “Create Database User” để tiếp tục.
Giờ bạn có thể kết nối với cụm của mình! Có nhiều cách để làm điều này, nhưng vì hướng dẫn tập trung vào PyMongo, chúng ta sẽ kết nối qua Drivers.
Chọn “Python” và phiên bản bạn muốn dùng (chúng tôi chọn 4.7 hoặc mới hơn), và bạn sẽ thấy Chuỗi kết nối của mình. Tên người dùng và mật khẩu được tự động điền để tiện sử dụng.
Khi đã có Chuỗi kết nối, vui lòng lưu ở nơi an toàn. Bây giờ chúng ta có thể nhấn nút xanh “Done”.
Đây là giao diện cụm của bạn sau khi cấu hình xong.
Hãy vào nút “Network Access” ở bên trái màn hình và đảm bảo địa chỉ IP của bạn được cấu hình đúng. Để đơn giản cho hướng dẫn này (dĩ nhiên không khuyến nghị cho môi trường sản xuất), bạn có thể đặt IP thành “Access from Anywhere”.
Cảnh báo môi trường sản xuất: Với ứng dụng ở cấp độ sản xuất, hãy đưa các IP cụ thể vào danh sách cho phép tại Network Access > IP Access List trong Atlas.
Giờ hãy mở IDE bạn chọn và bắt đầu thao tác với dữ liệu hiện có!
Kết nối và thực hiện thao tác CRUD với PyMongo
Bước đầu tiên là dùng pip để cài đặt pymongo. Chúng ta cũng cài getpass ở bước này để giữ kết nối an toàn:
Tiếp theo, hãy thiết lập kết nối MongoDB tới cụm. Chúng ta sẽ dùng MongoClient để đảm bảo kết nối.
import getpass
from pymongo import MongoClient
# Get connection string from user
connection_string = getpass.getpass(prompt="Enter connection string WITH USER + PASS here: ")try:
client = MongoClient(connection_string)
client.admin.command("ping")print("Successfully connected")except Exception as e:print("Connection failed:", e)Được hỗ trợ bởi
Quay lại cụm của bạn để xem tên cơ sở dữ liệu và bộ sưu tập. Tên cơ sở dữ liệu là sample_mflix và tên bộ sưu tập là users.
Dưới đây là ví dụ về thông tin chúng ta làm việc trong cụm mẫu này. Mỗi tài liệu có ObjectId, cùng với tên, email và mật khẩu của từng người dùng.
Hãy chạy một thử nghiệm nhanh để đảm bảo chúng ta có thể đọc tài liệu từ script:
database = client["sample_mflix"]
collection = database["users"]for document in collection.find().limit(20):print(document)Được hỗ trợ bởi
Khi chạy thành công, bạn sẽ thấy như sau:
Lưu ý: Bộ dữ liệu sample_mflix chứa mật khẩu văn bản thuần để phục vụ minh họa. Trong ứng dụng thực tế, luôn băm mật khẩu (ví dụ: bằng bcrypt hoặc Argon2) và tránh hard-code thông tin xác thực.
Đó cũng là cách chúng ta đọc thông tin trong cụm! Giờ hãy tạo một người dùng mới.
new_user ={"name":"Anaiya Raisinghani","email":"[email protected]","password":"pleasedonothackme"}# insert the document
result = collection.insert_one(new_user)print(result.inserted_id)Được hỗ trợ bởi
Chúng ta có thể thấy ID người dùng mới, và nếu tôi quay lại cụm, tôi có thể tìm ID này để xem tài liệu người dùng mới có xuất hiện không:
Giờ hãy cập nhật tài liệu vừa tạo.
Lưu ý: BSON đi kèm sẵn với PyMongo—không cần cài đặt thêm. ObjectId là định dạng ID duy nhất mặc định của MongoDB.
from bson import ObjectId
collection.update_one({"_id": result.inserted_id},# using the same document that we inserted above{"$set":{"password":"help!ivebeenhacked!!"}})Được hỗ trợ bởi
Như bạn thấy, mật khẩu đã được cập nhật và thay đổi hiển thị trong giao diện MongoDB Atlas.
Bây giờ, hãy xóa tài liệu này.
delete_user = collection.delete_one({"_id": result.inserted_id})print("Deleted users:", delete_user.deleted_count)Được hỗ trợ bởi
Số người dùng đã xóa sẽ là “1”. Hãy kiểm tra lại trong giao diện MongoDB Atlas (cho chắc chắn!).
Chúng ta đã xóa tài liệu thành công!
Kết luận
Trong hướng dẫn này, chúng ta đã trải qua 10 phút đầu tiên với PyMongo—trình điều khiển Python chính thức của MongoDB. Chúng ta đã đọc tài liệu trong bộ sưu tập, tạo người dùng mới, cập nhật người dùng đó và xóa đi!
Một số lỗi phổ biến khi kết nối PyMongo với MongoDB là gì?⌄
Các vấn đề thường gặp gồm chuỗi kết nối không đúng, hạn chế tường lửa (danh sách IP cho phép), hoặc lỗi xác thực. Hãy kiểm tra kỹ thông tin đăng nhập và cài đặt mạng nếu kết nối thất bại.
PyMongo có hỗ trợ lập trình bất đồng bộ không?⌄
Bản thân PyMongo không hỗ trợ bất đồng bộ một cách nguyên gốc. Nếu bạn cần khả năng async, hãy cân nhắc dùng Motor, trình điều khiển Python bất đồng bộ chính thức của MongoDB.
PyMongo có xử lý giao dịch cơ sở dữ liệu được không?⌄
Có, PyMongo hỗ trợ giao dịch ACID đa tài liệu, với điều kiện bạn dùng replica set hoặc cụm sharded của MongoDB. Giao dịch không khả dụng trên triển khai độc lập.
Làm sao xử lý connection pooling của PyMongo?⌄
PyMongo tự động quản lý connection pooling ở phía sau. Bạn có thể cấu hình các tham số pooling (như kích thước pool và timeout) thông qua cài đặt MongoClient nếu cần.
Tôi có thể dùng PyMongo với Pandas cho các tác vụ phân tích dữ liệu không?⌄
Chắc chắn rồi! Bạn có thể dễ dàng lấy dữ liệu MongoDB bằng PyMongo, rồi nạp trực tiếp vào DataFrame của Pandas để phân tích và xử lý dữ liệu.
Sẵn sàng kết nối cụm MongoDB với dự án Python của bạn chưa? Bạn gặp may rồi. Trong hướng dẫn này, bạn sẽ biết PyMongo là gì, vì sao đây là gói ưu tiên cho lập trình viên Python khi làm việc với MongoDB làm cơ sở dữ liệu, và cách thiết lập kết nối đầu tiên một cách nhanh gọn nhất.
Nếu bạn vừa bắt đầu, nhớ xem khóa học Giới thiệu sử dụng MongoDB cho Khoa học dữ liệu bằng Python của chúng tôi.
PyMongo là gì?
Vậy chính xác thì gói Python PyMongo là gì? Đây là trình điều khiển Python chính thức của MongoDB, cho phép nhà phát triển kết nối, truy vấn và tương tác giữa ứng dụng Python và cơ sở dữ liệu MongoDB.
Đây là cách thức được khuyến nghị để tương tác với cơ sở dữ liệu MongoDB từ Python, và rất phù hợp để xây dựng nhiều ứng dụng web nhờ khả năng tương thích với Flask và Django. Nó thực sự giúp lập trình viên Python khai thác tối đa MongoDB trong nhiều ứng dụng khác nhau.
Hãy cùng bắt đầu với PyMongo bằng cách chạy một ứng dụng người dùng mẫu CRUD (tạo, đọc, cập nhật, xóa) để thấy việc khởi động với lượng mã tối thiểu dễ dàng thế nào!
Yêu cầu để thành công
Để theo dõi hướng dẫn này suôn sẻ, vui lòng đảm bảo bạn có các điều kiện tiên quyết sau:
pipđã được cài đặt (nếu bạn dùng IDE khác với sổ tay Google Colab).Thiết lập một cụm MongoDB
Trước khi kết nối cơ sở dữ liệu MongoDB với dự án Python, chúng ta cần tạo một cụm! Để làm điều này, hãy đăng nhập vào tài khoản MongoDB Atlas và tạo một dự án mới nếu bạn chưa có.
Sau đó, hãy tạo một cụm trong dự án.
Giờ bạn đã sẵn sàng triển khai cụm. Nhấp vào gói “Free” (miễn phí mãi mãi!) và đặt tên cho cụm hoặc giữ nguyên tên mặc định.
Lưu ý rằng sau khi chọn tên cho cụm, bạn sẽ không thể đổi lại. Chọn nhà cung cấp đám mây (AWS, Google Cloud hoặc Azure) và đảm bảo bạn đang ở đúng khu vực.
Nhấp nút xanh “Create Deployment”, và chúng ta sẵn sàng tiếp tục.
Bạn sẽ được yêu cầu chọn “Username” và “Password” cho cụm. Hãy chọn thông tin dễ nhớ (nhưng không dễ đoán như trong hướng dẫn này!) và an toàn, vì bạn sẽ cần chúng mỗi khi truy cập Chuỗi kết nối (Connection String).
Nhớ nhấp vào nút “Preload sample dataset” để thao tác dễ dàng hơn. Thao tác này sẽ tự động nạp bộ dữ liệu mẫu “sample_mflix” mà chúng ta sẽ sử dụng.
Nhấp “Create Database User” để tiếp tục.
Giờ bạn có thể kết nối với cụm của mình! Có nhiều cách để làm điều này, nhưng vì hướng dẫn tập trung vào PyMongo, chúng ta sẽ kết nối qua Drivers.
Chọn “Python” và phiên bản bạn muốn dùng (chúng tôi chọn 4.7 hoặc mới hơn), và bạn sẽ thấy Chuỗi kết nối của mình. Tên người dùng và mật khẩu được tự động điền để tiện sử dụng.
Khi đã có Chuỗi kết nối, vui lòng lưu ở nơi an toàn. Bây giờ chúng ta có thể nhấn nút xanh “Done”.
Đây là giao diện cụm của bạn sau khi cấu hình xong.
Hãy vào nút “Network Access” ở bên trái màn hình và đảm bảo địa chỉ IP của bạn được cấu hình đúng. Để đơn giản cho hướng dẫn này (dĩ nhiên không khuyến nghị cho môi trường sản xuất), bạn có thể đặt IP thành “Access from Anywhere”.
Cảnh báo môi trường sản xuất: Với ứng dụng ở cấp độ sản xuất, hãy đưa các IP cụ thể vào danh sách cho phép tại Network Access > IP Access List trong Atlas.
Giờ hãy mở IDE bạn chọn và bắt đầu thao tác với dữ liệu hiện có!
Kết nối và thực hiện thao tác CRUD với PyMongo
Bước đầu tiên là dùng
pipđể cài đặtpymongo. Chúng ta cũng càigetpassở bước này để giữ kết nối an toàn:Tiếp theo, hãy thiết lập kết nối MongoDB tới cụm. Chúng ta sẽ dùng
MongoClientđể đảm bảo kết nối.Quay lại cụm của bạn để xem tên cơ sở dữ liệu và bộ sưu tập. Tên cơ sở dữ liệu là
sample_mflixvà tên bộ sưu tập làusers.Dưới đây là ví dụ về thông tin chúng ta làm việc trong cụm mẫu này. Mỗi tài liệu có ObjectId, cùng với tên, email và mật khẩu của từng người dùng.
Hãy chạy một thử nghiệm nhanh để đảm bảo chúng ta có thể đọc tài liệu từ script:
Khi chạy thành công, bạn sẽ thấy như sau:
Lưu ý: Bộ dữ liệu sample_mflix chứa mật khẩu văn bản thuần để phục vụ minh họa. Trong ứng dụng thực tế, luôn băm mật khẩu (ví dụ: bằng bcrypt hoặc Argon2) và tránh hard-code thông tin xác thực.
Đó cũng là cách chúng ta đọc thông tin trong cụm! Giờ hãy tạo một người dùng mới.
Chúng ta có thể thấy ID người dùng mới, và nếu tôi quay lại cụm, tôi có thể tìm ID này để xem tài liệu người dùng mới có xuất hiện không:
Giờ hãy cập nhật tài liệu vừa tạo.
Lưu ý: BSON đi kèm sẵn với PyMongo—không cần cài đặt thêm. ObjectId là định dạng ID duy nhất mặc định của MongoDB.
Như bạn thấy, mật khẩu đã được cập nhật và thay đổi hiển thị trong giao diện MongoDB Atlas.
Bây giờ, hãy xóa tài liệu này.
Số người dùng đã xóa sẽ là “1”. Hãy kiểm tra lại trong giao diện MongoDB Atlas (cho chắc chắn!).
Chúng ta đã xóa tài liệu thành công!
Kết luận
Trong hướng dẫn này, chúng ta đã trải qua 10 phút đầu tiên với PyMongo—trình điều khiển Python chính thức của MongoDB. Chúng ta đã đọc tài liệu trong bộ sưu tập, tạo người dùng mới, cập nhật người dùng đó và xóa đi!
Để biết thêm về PyMongo, vui lòng xem khóa học Giới thiệu sử dụng MongoDB cho Khoa học dữ liệu bằng Python và truy cập tài liệu chính thức.