Tác giả đã chọn quỹ nguồn mở và miễn phí để nhận quyên góp như một phần của chương trình Write for quyên góp. Show
Giới thiệuTrong các ứng dụng web, bạn thường cần một cơ sở dữ liệu, là một bộ sưu tập dữ liệu có tổ chức. Bạn sử dụng cơ sở dữ liệu để lưu trữ và duy trì dữ liệu liên tục có thể được truy xuất và thao tác hiệu quả. Ví dụ: trong một ứng dụng truyền thông xã hội, bạn có một cơ sở dữ liệu trong đó dữ liệu người dùng (thông tin cá nhân, bài đăng, nhận xét, người theo dõi) được lưu trữ theo cách có thể được thao tác hiệu quả. Bạn có thể thêm dữ liệu vào cơ sở dữ liệu, truy xuất nó, sửa đổi nó hoặc xóa nó, tùy thuộc vào các yêu cầu và điều kiện khác nhau. Trong một ứng dụng web, các yêu cầu này có thể là người dùng thêm một bài đăng mới, xóa một bài đăng hoặc xóa tài khoản của họ, có thể hoặc không xóa bài đăng của họ. Các hành động bạn thực hiện để thao tác dữ liệu sẽ phụ thuộc vào các tính năng cụ thể trong ứng dụng của bạn. Ví dụ: bạn có thể không muốn người dùng thêm bài đăng không có tiêu đề. Flask là một khung web Python nhẹ, cung cấp các công cụ và tính năng hữu ích để tạo các ứng dụng web bằng ngôn ngữ Python. MongoDB là một chương trình cơ sở dữ liệu NoQuery, định hướng tài liệu chung, sử dụng các tài liệu giống JSON để lưu trữ dữ liệu. Không giống như các mối quan hệ dạng bảng được sử dụng trong cơ sở dữ liệu quan hệ, các tài liệu giống như JSON cho phép các lược đồ linh hoạt và động trong khi duy trì sự đơn giản. Nói chung, cơ sở dữ liệu NoQuery có khả năng mở rộng theo chiều ngang, làm cho chúng phù hợp cho dữ liệu lớn và các ứng dụng thời gian thực. Trong hướng dẫn này, bạn sẽ xây dựng một ứng dụng Web Danh sách việc làm nhỏ để trình bày cách sử dụng Thư viện Pymongo, trình điều khiển cơ sở dữ liệu MongoDB cho phép bạn tương tác với cơ sở dữ liệu MongoDB của bạn trong Python. Bạn sẽ sử dụng nó với bình để thực hiện các tác vụ cơ bản, chẳng hạn như kết nối với máy chủ cơ sở dữ liệu, tạo các bộ sưu tập lưu trữ một nhóm tài liệu trong MongoDB, chèn dữ liệu vào bộ sưu tập và truy xuất và xóa dữ liệu khỏi bộ sưu tập. Điều kiện tiên quyết
Bước 1 - Thiết lập pymongo và bìnhTrong bước này, bạn sẽ cài đặt bình và thư viện pymongo. Với môi trường ảo được kích hoạt, sử dụng 8 để cài đặt bình và pymongo:
Sau khi cài đặt được hoàn thành thành công, bạn sẽ thấy một dòng tương tự như sau ở cuối đầu ra:
Bây giờ bạn đã cài đặt các gói Python cần thiết, bạn sẽ kết nối với máy chủ MongoDB của mình và tạo một bộ sưu tập. Bước 2 - Kết nối với máy chủ MongoDB và tạo bộ sưu tậpTrong bước này, bạn sẽ sử dụng thư viện Pymongo để tạo máy khách mà bạn sẽ sử dụng để tương tác với máy chủ MongoDB của mình, tạo cơ sở dữ liệu và sau đó tạo một bộ sưu tập để lưu trữ TODOS của bạn. Với môi trường lập trình của bạn được kích hoạt, hãy mở một tệp có tên 9 để chỉnh sửa bên trong thư mục 7 của bạn:
Tệp này sẽ nhập lớp cần thiết và người trợ giúp từ Flask và Thư viện Pymongo. Bạn sẽ tương tác với máy chủ MongoDB của mình để tạo cơ sở dữ liệu và tạo một bộ sưu tập cho TODOS. Thêm mã sau vào 9:flask_app/app.py
Lưu và đóng tập tin. Ở đây bạn nhập lớp 2 mà bạn sử dụng để tạo một thể hiện ứng dụng bình được gọi là 3.Bạn nhập 4 mà bạn sử dụng để tạo đối tượng máy khách cho phiên bản MongoDB có tên 5, cho phép bạn kết nối và tương tác với máy chủ MongoDB của bạn. Khi bạn khởi tạo 6, bạn chuyển nó vào máy chủ của máy chủ MongoDB của bạn, đó là 7 trong trường hợp của chúng tôi và cổng, đó là 8 ở đây.Note: Chúng tôi khuyên bạn nên cứng người bảo mật cài đặt MongoDB của mình bằng cách làm theo hướng dẫn của chúng tôi về cách bảo mật MongoDB trên Ubuntu 20.04. Khi nó được bảo mật, sau đó bạn có thể định cấu hình MongoDB để chấp nhận các kết nối từ xa.strongly recommended that you harden your MongoDB installation’s security by following our guide on How To Secure MongoDB on Ubuntu 20.04. Once it’s secured, you could then configure MongoDB to accept remote connections. Khi bạn bật xác thực trong MongoDB, bạn sẽ cần phải vượt qua các tham số 9 và 0 khi tạo một thể hiện 6 như vậy:
Sau đó, bạn sử dụng thể hiện 5 để tạo cơ sở dữ liệu MongoDB gọi là 3 và lưu tham chiếu đến nó trong một biến gọi là 4.Sau đó, bạn tạo một bộ sưu tập có tên 5 trên cơ sở dữ liệu 3 bằng cách sử dụng biến 4. Bộ sưu tập lưu trữ một nhóm các tài liệu trong MongoDB, như các bảng trong cơ sở dữ liệu quan hệ.Trong MongoDB, cơ sở dữ liệu và bộ sưu tập được tạo ra một cách lười biếng. Điều này có nghĩa là ngay cả khi bạn thực thi tệp 9, không có mã nào liên quan đến cơ sở dữ liệu sẽ thực sự được thực thi cho đến khi tài liệu đầu tiên được tạo. Bạn sẽ tạo một ứng dụng Bình nhỏ với một trang cho phép người dùng chèn các tài liệu TODO vào bộ sưu tập 5 của bạn trong bước tiếp theo. Khi tài liệu TODO đầu tiên được thêm vào, cơ sở dữ liệu 3 và bộ sưu tập 5 sẽ được tạo trên máy chủ MongoDB của bạn.Để có được danh sách các cơ sở dữ liệu hiện tại của bạn, hãy mở một thiết bị đầu cuối mới và khởi động shell 2 bằng lệnh sau:
Lời nhắc sẽ được mở, bạn có thể kiểm tra cơ sở dữ liệu của mình bằng lệnh sau:
Đầu ra, nếu đây là bản cài đặt mới của MongoDB, sẽ liệt kê cơ sở dữ liệu 3, 4 và 5.Bạn có thể nhận thấy rằng 3 không tồn tại. Để lại vỏ 2 chạy trong cửa sổ thiết bị đầu cuối và tiếp tục bước tiếp theo.Bước 3 - Tạo một trang web để thêm và hiển thị TODOSTrong bước này, bạn sẽ tạo một trang web với một biểu mẫu web cho phép người dùng thêm TODO và hiển thị chúng trên cùng một trang. Với môi trường lập trình của bạn được kích hoạt, hãy mở tệp 9 của bạn để chỉnh sửa:
Đầu tiên, thêm các nhập khẩu sau từ 9:flask_app/app.py
Ở đây, bạn nhập chức năng 0 Helper mà bạn sẽ sử dụng để hiển thị mẫu HTML, đối tượng 1 để truy cập dữ liệu mà người dùng sẽ gửi, hàm 2 để tạo URL và chức năng 3 để chuyển hướng người dùng trở lại trang chỉ mục sau khi Thêm một việc todo.Sau đó thêm tuyến sau ở cuối tệp: flask_app/app.py
Lưu và đóng tập tin. Trong tuyến đường này, bạn chuyển Tuple 4 cho tham số 5 để cho phép cả nhận và đăng yêu cầu. Nhận yêu cầu được sử dụng để lấy dữ liệu từ máy chủ. Yêu cầu POST được sử dụng để đăng dữ liệu lên một tuyến đường cụ thể. Theo mặc định, chỉ cho phép nhận được yêu cầu. Khi người dùng trước tiên yêu cầu tuyến 6 bằng yêu cầu GET, một tệp mẫu có tên 7 sẽ được hiển thị. Sau đó, bạn sẽ chỉnh sửa tuyến đường này để xử lý các yêu cầu POST khi người dùng điền và gửi biểu mẫu web để tạo todos mới.Tiếp theo Tạo một thư mục mẫu trong thư mục 7 của bạn và mẫu 7 bạn đã tham khảo trong tuyến trước: 0Thêm mã sau bên trong tệp 7:flask_app/templates/index.html 1Lưu và đóng tập tin. Trong tuyến đường này, bạn chuyển Tuple 4 cho tham số 5 để cho phép cả nhận và đăng yêu cầu. Nhận yêu cầu được sử dụng để lấy dữ liệu từ máy chủ. Yêu cầu POST được sử dụng để đăng dữ liệu lên một tuyến đường cụ thể. Theo mặc định, chỉ cho phép nhận được yêu cầu. Khi người dùng trước tiên yêu cầu tuyến 6 bằng yêu cầu GET, một tệp mẫu có tên 7 sẽ được hiển thị. Sau đó, bạn sẽ chỉnh sửa tuyến đường này để xử lý các yêu cầu POST khi người dùng điền và gửi biểu mẫu web để tạo todos mới.Important option or the Unimportant option when creating a todo. Last, you have a
Submit button at the end of the form.Tiếp theo Tạo một thư mục mẫu trong thư mục 7 của bạn và mẫu 7 bạn đã tham khảo trong tuyến trước: 2Thêm mã sau bên trong tệp 7: 3Ở đây bạn có một trang HTML cơ bản với một tiêu đề, một số phong cách, tiêu đề và biểu mẫu web. Trong biểu mẫu Web, bạn đặt thuộc tính 1 error when attempting to run the application. To fix this, deactivate your virtual environment and reactivate it. Then run the 2 command again.Mặc dù trong thư mục 7 của bạn với môi trường ảo được kích hoạt, hãy kể bình nói về ứng dụng ( 9 trong trường hợp này) bằng cách sử dụng biến môi trường 8. Sau đó đặt biến môi trường 9 thành 0 để chạy ứng dụng ở chế độ phát triển và có quyền truy cập vào trình gỡ lỗi. Để biết thêm thông tin về trình gỡ lỗi bình, xem cách xử lý các lỗi trong ứng dụng bình. Sử dụng các lệnh sau để làm điều này: 4Tiếp theo, chạy ứng dụng:Submit button. Lưu ý: Bạn có thể nhận được lỗi 1 khi cố gắng chạy ứng dụng. Để khắc phục điều này, hủy kích hoạt môi trường ảo của bạn và kích hoạt lại nó. Sau đó chạy lại lệnh 2.Nếu bạn điền vào biểu mẫu và gửi nó, gửi yêu cầu bài đăng đến máy chủ, không có gì xảy ra vì bạn không xử lý các yêu cầu POST trên tuyến 6.Để máy chủ chạy và mở một cửa sổ thiết bị đầu cuối mới. Mở 9 để xử lý yêu cầu bài đăng Người dùng gửi, thêm chúng vào Bộ sưu tập Todos và hiển thị chúng trên trang Index:
Chỉnh sửa tuyến đường 6 để trông như sau:flask_app/app.py 6Lưu và đóng tập tin. Trong những thay đổi này, bạn xử lý các yêu cầu POST bên trong điều kiện 6. Bạn trích xuất Nội dung TODO và mức độ quan trọng mà người dùng gửi từ đối tượng 7.Bạn sử dụng phương thức 8 trên bộ sưu tập Todos để thêm tài liệu việc cần làm vào đó. Bạn cung cấp dữ liệu việc làm trong từ điển Python, đặt 9 thành giá trị mà người dùng đã gửi trong trường văn bản cho nội dung TODO và đặt khóa 0 thành giá trị của nút radio mà người dùng chọn. Sau đó, bạn chuyển hướng đến trang Index, sẽ làm mới trang và hiển thị mục TODO mới được thêm.Để hiển thị tất cả các TODO đã lưu, bạn sử dụng phương thức 1 bên ngoài mã chịu trách nhiệm xử lý các yêu cầu bài, trả về tất cả các tài liệu việc cần làm trong bộ sưu tập 5. Bạn lưu Todos bạn nhận được từ cơ sở dữ liệu trong một biến có tên là 3, và sau đó bạn chỉnh sửa lệnh gọi hàm 0 để chuyển danh sách các tài liệu todo cho mẫu 7, sẽ có sẵn trong mẫu trong một biến có tên là 5.Nếu bạn làm mới trang chỉ mục, bạn có thể nhận được một thông báo từ trình duyệt yêu cầu bạn xác nhận việc gửi lại biểu mẫu. Nếu bạn chấp nhận, mục TODO bạn đã gửi trước đó trước khi xử lý các yêu cầu POST sau đó sẽ được thêm vào cơ sở dữ liệu, vì mã để xử lý các biểu mẫu hiện tồn tại trong tuyến đường. Bởi vì trang chỉ mục chưa có mã để hiển thị các mục TODO, mục bạn đã thêm sẽ không hiển thị. Nếu bạn cho phép trình duyệt gửi lại biểu mẫu của bạn, bạn có thể xem dữ liệu mới được thêm vào bằng cách mở vỏ Mongo của bạn và kết nối với cơ sở dữ liệu 3 bằng cách sử dụng lệnh sau: 7Sau đó, sử dụng chức năng 1 để có tất cả các mục TODO trong cơ sở dữ liệu: 8Nếu bất kỳ dữ liệu nào được gửi lại, bạn sẽ thấy nó ở đây trong đầu ra của bạn. Tiếp theo, hãy mở mẫu 7 để hiển thị nội dung của danh sách 5 bạn đã chuyển cho nó: 9Chỉnh sửa tệp bằng cách thêm lỗi 01 và vòng lặp Jinja 02 sau biểu mẫu, để tệp trông như sau:flask_app/templates/index.html 0Lưu và đóng tập tin. Trong những thay đổi này, bạn xử lý các yêu cầu POST bên trong điều kiện 6. Bạn trích xuất Nội dung TODO và mức độ quan trọng mà người dùng gửi từ đối tượng 7.Bạn sử dụng phương thức 8 trên bộ sưu tập Todos để thêm tài liệu việc cần làm vào đó. Bạn cung cấp dữ liệu việc làm trong từ điển Python, đặt 9 thành giá trị mà người dùng đã gửi trong trường văn bản cho nội dung TODO và đặt khóa 0 thành giá trị của nút radio mà người dùng chọn. Sau đó, bạn chuyển hướng đến trang Index, sẽ làm mới trang và hiển thị mục TODO mới được thêm.Để hiển thị tất cả các TODO đã lưu, bạn sử dụng phương thức 1 bên ngoài mã chịu trách nhiệm xử lý các yêu cầu bài, trả về tất cả các tài liệu việc cần làm trong bộ sưu tập 5. Bạn lưu Todos bạn nhận được từ cơ sở dữ liệu trong một biến có tên là 3, và sau đó bạn chỉnh sửa lệnh gọi hàm 0 để chuyển danh sách các tài liệu todo cho mẫu 7, sẽ có sẵn trong mẫu trong một biến có tên là 5.Nếu bạn làm mới trang chỉ mục, bạn có thể nhận được một thông báo từ trình duyệt yêu cầu bạn xác nhận việc gửi lại biểu mẫu. Nếu bạn chấp nhận, mục TODO bạn đã gửi trước đó trước khi xử lý các yêu cầu POST sau đó sẽ được thêm vào cơ sở dữ liệu, vì mã để xử lý các biểu mẫu hiện tồn tại trong tuyến đường.Bởi vì trang chỉ mục chưa có mã để hiển thị các mục TODO, mục bạn đã thêm sẽ không hiển thị. Nếu bạn cho phép trình duyệt gửi lại biểu mẫu của bạn, bạn có thể xem dữ liệu mới được thêm vào bằng cách mở vỏ Mongo của bạn và kết nối với cơ sở dữ liệu 3 bằng cách sử dụng lệnh sau:Sau đó, sử dụng chức năng 1 để có tất cả các mục TODO trong cơ sở dữ liệu:Nếu bất kỳ dữ liệu nào được gửi lại, bạn sẽ thấy nó ở đây trong đầu ra của bạn. Tiếp theo, hãy mở mẫu 7 để hiển thị nội dung của danh sách 5 bạn đã chuyển cho nó:
Chỉnh sửa tệp bằng cách thêm lỗi 01 và vòng lặp Jinja 02 sau biểu mẫu, để tệp trông như sau:flask_app/app.py 2Trong tệp này, bạn thêm thẻ 01 để phân tách biểu mẫu web và danh sách TODO.Bạn sử dụng vòng lặp 02 trong dòng 05 để đi qua từng mục việc cần làm trong danh sách 5. Bạn hiển thị nội dung TODO và mức độ quan trọng bên trong thẻ 07.flask_app/app.py 3Lưu và đóng tập tin. Trong những thay đổi này, bạn xử lý các yêu cầu POST bên trong điều kiện 6. Bạn trích xuất Nội dung TODO và mức độ quan trọng mà người dùng gửi từ đối tượng 7.Bạn sử dụng phương thức 8 trên bộ sưu tập Todos để thêm tài liệu việc cần làm vào đó. Bạn cung cấp dữ liệu việc làm trong từ điển Python, đặt 9 thành giá trị mà người dùng đã gửi trong trường văn bản cho nội dung TODO và đặt khóa 0 thành giá trị của nút radio mà người dùng chọn. Sau đó, bạn chuyển hướng đến trang Index, sẽ làm mới trang và hiển thị mục TODO mới được thêm.Sau khi xóa tài liệu TODO, bạn chuyển hướng người dùng đến trang Index. Tiếp theo, chỉnh sửa mẫu 7 để thêm nút DELETE TODO:Delete Todo button: 9Chỉnh sửa vòng lặp 02 bằng cách thêm thẻ 25 mới:flask_app/templates/index.html 5Lưu và đóng tập tin. Ở đây, bạn có một biểu mẫu web gửi yêu cầu POST đến chức năng xem ____10109. Bạn vượt qua 27 để chỉ định việc cần làm sẽ bị xóa. Bạn sử dụng phương thức 28 có sẵn trong các trình duyệt web để hiển thị thông báo xác nhận trước khi gửi yêu cầu.Bây giờ hãy làm mới trang chỉ mục của bạn và bạn sẽ thấy một nút TODO xóa bên dưới mỗi mục TODO. Nhấp vào nó, và xác nhận xóa. Bạn sẽ được chuyển hướng đến trang Index và việc TODO sẽ không còn ở đó nữa.Delete Todo button below each todo item. Click on it, and confirm the deletion. You’ll be redirected to the index page, and the todo will no longer be there. Bây giờ bạn có một cách để xóa Todos không mong muốn khỏi cơ sở dữ liệu MongoDB của bạn trong ứng dụng bình của bạn. Để xác nhận việc xóa, hãy mở vỏ Mongo của bạn và sử dụng hàm 1: 8Bạn sẽ thấy rằng các mục bạn đã xóa không còn trong bộ sưu tập 5 của bạn.Sự kết luậnBạn đã xây dựng một ứng dụng web nhỏ để quản lý TODO giao tiếp với cơ sở dữ liệu MongoDB. Bạn đã học cách kết nối với máy chủ cơ sở dữ liệu MongoDB, tạo các bộ sưu tập lưu trữ một nhóm tài liệu, chèn dữ liệu vào bộ sưu tập và truy xuất và xóa dữ liệu khỏi bộ sưu tập. Nếu bạn muốn đọc thêm về Flask, hãy xem các hướng dẫn khác trong cách tạo các trang web với sê -ri Flask. Để biết thêm về MongoDB, hãy xem Cách quản lý dữ liệu của chúng tôi với loạt Hướng dẫn MongoDB. Flask có hỗ trợ cơ sở dữ liệu NoQuery không?Một số cơ sở dữ liệu phổ biến mà các nhà phát triển sử dụng với Flask-Sqlalchemy là SQLite, PostgreSQL, MySQL, v.v. Flask cũng có các plugin như Flask-Mongoengine, Flask-Mo như MongoDB và CouchDB.Flask also has plugins such as Flask-MongoEngine, Flask-MongoAlchemy, Flask-CouchDB, etc. to work with NoSQL document-based databases such as MongoDB, and CouchDB.
Làm thế nào để Fastapi kết nối với MongoDB?Mục lục.. Prerequisites.. Bước 1: Thiết lập ban đầu và tạo môi trường ảo .. Bước 2: Cài đặt phụ thuộc .. Bước 3: Tạo điểm cuối gốc cho Fastapi .. Bước 4: Cấu hình Atlas MongoDB .. Bước 5: Tạo thêm điểm cuối của người dùng .. Sqlalchemy có làm việc với MongoDB không?Với đầu nối CDATA Python cho MongoDB và bộ công cụ SQLalchemy, bạn có thể xây dựng các ứng dụng và tập lệnh Python kết nối MongoDB.Bài viết này cho thấy cách sử dụng sqlalchemy để kết nối với dữ liệu MongoDB để truy vấn, cập nhật, xóa và chèn dữ liệu MongoDB.. This article shows how to use SQLAlchemy to connect to MongoDB data to query, update, delete, and insert MongoDB data.
Cái nào tốt hơn pymongo hay cầy Mongoengine?Cả Pymongo và Mongoengine đều có thể được sử dụng để truy cập dữ liệu từ cơ sở dữ liệu MongoDB.Tuy nhiên, họ làm việc theo những cách rất khác nhau và cung cấp các tính năng khác nhau.Pymongo là thư viện khuyến nghị MongoDB.Nó giúp bạn dễ dàng sử dụng các tài liệu MongoDB và bản đồ trực tiếp đến ngôn ngữ truy vấn MongoDB quen thuộc.PyMongo is the MongoDB recommended library. It makes it easy to use MongoDB documents and maps directly to the familiar MongoDB Query Language. |