Hướng dẫn connect django to mongodb atlas - kết nối django với bản đồ mongodb

Trong một tháng qua, tôi đã có một hành trình để tìm hiểu phát triển toàn bộ bằng cách sử dụng các công cụ và dịch vụ khó khăn khác nhau, từ các sản phẩm AWS SaaS đến Django để phát triển web và MongoDB (NoQuery) cho cơ sở dữ liệu phụ trợ. Đã đọc các tài liệu và đi qua Hướng dẫn học tập chính thức cho từng công cụ và dịch vụ này, đã đến lúc mang tất cả chúng lại với nhau trong một dự án duy nhất. Trong khi làm như vậy, kết nối MongoDB với Django 3.0.7 là nơi mọi thứ trở nên phức tạp. Hướng dẫn này là để hỗ trợ những người có thể gặp vấn đề khi tích hợp cơ sở dữ liệu phụ trợ với khung Django.

Django hiện không hỗ trợ MongoDB là cơ sở dữ liệu phụ trợ. Để bạn sử dụng MongoDB, bạn sẽ cần cài đặt Djongo trong môi trường ảo của mình.

pip install djongo

Bằng cách cài đặt Djongo, phiên bản django của bạn có thể hạ cấp xuống 2.2.13, bạn có thể kiểm tra bằng lệnh đơn giản ‘Pip Freeze. Bây giờ, bạn có thể chọn tiếp tục với phiên bản Django này, tuy nhiên, cho hướng dẫn này, tôi sẽ cập nhật nó lên phiên bản mới nhất.

pip install --upgrade django

Bây giờ chúng tôi sẽ tạo ra một cụm MongoDB miễn phí, nếu bạn không có một. Chỉ cần truy cập https://www.mongodb.com/ry, đăng ký tài khoản và tạo cụm miễn phí (tùy chọn đầu tiên sau khi đăng ký). Đối với nhà cung cấp đám mây, tôi thích sử dụng AWS với một khu vực gần tôi nhất và bạn có thể chọn bất kỳ gì có thể phù hợp hơn với nhu cầu của bạn.
Simply head to https://www.mongodb.com/try, sign-up for an account and create a free cluster (first option after signing up). For the cloud provider, I prefer to use AWS with a region closest to me, and you can choose whichever may better suit your needs.

Cuối cùng, tạo cụm và chờ nó triển khai. Điều này thường sẽ mất 3 phút4. Khi cụm hoạt động và chạy, bạn sẽ cần tạo người dùng cơ sở dữ liệu. Để thực hiện việc này, nhấp vào cơ sở dữ liệu truy cập cơ sở dữ liệu trên thanh bên trái và thêm người dùng cơ sở dữ liệu mới với các đặc quyền đọc và ghi.
Once the cluster is up and running, you’ll need to create a database user. To do this, click “Database Access” on the left sidebar, and add a new database user with read and write privileges.

Tiếp theo, bạn sẽ cần danh sách trắng địa chỉ IP của mình thông qua tab Truy cập mạng trên mạng trên thanh bên trái. Vì lý do bảo mật, chỉ thêm địa chỉ IP của bạn nhưng đối với hướng dẫn này, tôi sẽ cho phép truy cập từ bất cứ đâu.

Điều cuối cùng cần làm trước khi kết nối với cụm của bạn là tạo cơ sở dữ liệu. Nhấp vào trên các cụm của nhóm khác ở thanh bên trái và sau đó nhấp vào Bộ sưu tập của Google. Trên trang Bộ sưu tập, nhấp vào Thêm Thêm dữ liệu của riêng tôi và tạo cơ sở dữ liệu.

Cuối cùng, thời gian để kết nối cơ sở dữ liệu MongoDB với dự án Django của bạn. Trước khi quay trở lại Django, hãy sao chép chuỗi kết nối của cơ sở dữ liệu của bạn có thể tìm thấy trên trang của cụm. Nhấp vào Kết nối và kết nối ứng dụng của bạn. Trong trường hợp của tôi, chuỗi kết nối là: MongoDB+SRV: // SampleUser:@cluster0-gbdot.mongodb.net/? Retrywrites = true & w = đa số

Trước khi chỉnh sửa tệp cài đặt Django Project của bạn, điều quan trọng là bạn phải cài đặt DNSpython. DnSpython được sử dụng để kết nối với MongoDB+SRV: // URI.

pip install dnspython

Bây giờ, hãy mở tệp cài đặt dự án của bạn và cuộn xuống cho đến khi bạn thấy phần cơ sở dữ liệu. Thay đổi mã như sau, điền thông tin cần thiết cần thiết:

DATABASE = {
'default': {
'ENGINE': 'djongo',
"CLIENT": {
"name": ,
"host": ,
"username": ,
"password": ,
"authMechanism": "SCRAM-SHA-1",
},
}
}

Ngoài ra, đừng quên thêm tên mật khẩu và cơ sở dữ liệu của bạn vào chuỗi kết nối. Nó sẽ trông giống như thế này:

Nếu chúng tôi thử di chuyển dự án vào cơ sở dữ liệu, nó sẽ gây ra lỗi kết nối pymongo. Điều này là do pymongo (được cài đặt với djongo) đang cố gắng kết nối với cơ sở dữ liệu MongoDB cục bộ thay vì máy chủ mà bạn đã cung cấp cho tệp setstems.py. Để giải quyết vấn đề này, bạn sẽ cần phải thay đổi biến máy chủ của máy chủ trên tệp Mongo_Client.py thành chuỗi kết nối của bạn. Tệp này có thể được tìm thấy trong /lib/python/site-packages/pymongo/mongo_client.py.

HOST = "mongodb+srv://sampleUser:/sampleDB?retryWrites=true&w=majority"

Bây giờ bạn sẽ có thể di chuyển đến cơ sở dữ liệu MongoDB.

python manage.py migrate

Nếu vì một lý do nào đó, bạn nhận được lỗi này: Từ Djongo là một cơ sở dữ liệu phụ trợ có sẵn, thì việc hạ cấp Pymongo xuống phiên bản 3.7.2 sẽ thực hiện thủ thuật.

Hoặc, nếu bạn nhận được sqldecodeError, hạ cấp sqlparse xuống một phiên bản ổn định hơn, tức là 0.2.4.

Tôi đang cố gắng kết nối ví dụ Django của mình với cụm DB Mongo bằng Django. Tôi đã kiểm tra từ nhiều nguồn khác nhau và cách nó tiến gần hơn đến công việc là:

  • Cài đặt DNSpython
  • Có những điều sau đây
    pip install --upgrade django
    4 Dict trong
    pip install --upgrade django
    5
DATABASES = {
    'default': {
        'ENGINE': 'djongo',
        'NAME': 'test',
        'HOST': 'mongodb+srv://mongo_usr:' + urllib.parse.quote('mypassword') + '@domain_assigned.mongodb.net/test?ssl=true&ssl_cert_reqs=CERT_NONE&retryWrites=true',
        'ENFORCE_SCHEMA': False
    }
}

Nó thực sự tìm thấy điểm cuối nhưng tôi đang gặp một lỗi kỳ lạ:

pip install --upgrade django
6

Có ai đã sửa cái này trước đây không?

Vadim Kotov

7.8648 Huy hiệu vàng47 Huy hiệu bạc62 Huy hiệu Đồng8 gold badges47 silver badges62 bronze badges

Hỏi ngày 5 tháng 4 năm 2019 lúc 21:38Apr 5, 2019 at 21:38

Hướng dẫn connect django to mongodb atlas - kết nối django với bản đồ mongodb

5

Tôi chỉ thiết lập Atlas Djongo và MongoDB với những điều sau đây:

DATABASES = {
        'default': {
        'ENGINE': 'djongo',
        'NAME': '',
        'HOST': 'mongodb+srv://:@....mongodb.net/test?retryWrites=true',
        'USER': '',
        'PASSWORD': '',
    }
}

Hy vọng điều đó sẽ giúp!

Đã trả lời ngày 7 tháng 4 năm 2019 lúc 15:06Apr 7, 2019 at 15:06

Hướng dẫn connect django to mongodb atlas - kết nối django với bản đồ mongodb

5

Cài đặt gói Djongo bằng

pip install --upgrade django
7.

Đảm bảo bạn nhập mô -đun theo sau:

import urllib

Cài đặt cơ sở dữ liệu thiết lập.

DATABASES = {
    'default': {
        'ENGINE': 'djongo',
        'NAME': '',
        'HOST': "mongodb+srv://:" +
                urllib.parse.quote_plus("") +
                "@........mongodb.net/test?retryWrites=true&ssl=true&ssl_cert_reqs=CERT_NONE&w=majority",
    }
}

Thay thế db_username, db_name và db_password bằng thông tin đăng nhập của bạn.

Cũng chỉnh sửa tên máy chủ được đưa ra bởi Mongo Atlas.

Đã trả lời ngày 1 tháng 11 năm 2019 lúc 14:25Nov 1, 2019 at 14:25

Hướng dẫn connect django to mongodb atlas - kết nối django với bản đồ mongodb

RobomexrobomexRoboMex

7709 Huy hiệu bạc12 Huy hiệu đồng9 silver badges12 bronze badges

0

Đã làm việc này mà không có bất kỳ hack nào như sau:

  1. Cài đặt
    pip install --upgrade django
    8.
  2. Cập nhật cài đặt.
pip install --upgrade django
0
  1. Chạy
    pip install --upgrade django
    9
  2. Chạy
    pip install dnspython
    0

Đã trả lời ngày 10 tháng 5 năm 2020 lúc 18:39May 10, 2020 at 18:39

NagarjunnagarjunNagarjun

751 Huy hiệu bạc10 Huy hiệu đồng1 silver badge10 bronze badges

1

Giải pháp đơn giản và chính xác nhất:

Bước 1: Cài đặt Djongo và Dnspython

Pip cài đặt Djongo

PIP Cài đặt Dnspython

Bước 2: Thay đổi trong Cài đặt.Py:

pip install --upgrade django
1

Đã trả lời ngày 1 tháng 6 năm 2020 lúc 7:13Jun 1, 2020 at 7:13

Tôi đã quản lý để kết nối với Mongo Atlas với Djongo bằng cách sử dụng đoạn trích từ @market phía trước tại đây

Có vẻ như họ không muốn mật khẩu có các ký tự kỳ lạ bên trong. Trong trường hợp như vậy, ngay cả việc trốn thoát cũng không hoạt động tối ưu.

Đã trả lời ngày 14 tháng 4 năm 2019 lúc 13:33Apr 14, 2019 at 13:33

py_scriptpy_scriptpy_script

7982 Huy hiệu vàng17 Huy hiệu bạc38 Huy hiệu đồng2 gold badges17 silver badges38 bronze badges

1

Sau khi chỉnh sửa cài đặt DB của bạn.

pip install --upgrade django
2

Hướng dẫn connect django to mongodb atlas - kết nối django với bản đồ mongodb

Đã trả lời ngày 4 tháng 2 năm 2021 lúc 12:40Feb 4, 2021 at 12:40

Hướng dẫn connect django to mongodb atlas - kết nối django với bản đồ mongodb

Đối với Djongo phiên bản 1.3.6 Điều này đã làm việc cho tôi:

pip install --upgrade django
3

}

Đã trả lời ngày 13 tháng 7 lúc 12:58Jul 13 at 12:58

Hướng dẫn connect django to mongodb atlas - kết nối django với bản đồ mongodb

Chúng ta có thể kết nối Django với MongoDB không?

Chúng tôi thậm chí không cần phải thay đổi Django Orm. Phần tốt nhất là chúng ta có thể thiết lập Django với MongoDB bằng cách chỉ thêm một dòng mã. Không cần phải thay đổi các bộ tuần tự, chế độ xem hoặc bất kỳ mô -đun nào khác. Djongo dịch một chuỗi truy vấn SQL thành tài liệu truy vấn MongoDB.

Làm thế nào để Python kết nối với Atlas MongoDB?

Bạn sẽ cần lấy chuỗi kết nối của cụm từ Atlas để kết nối với cụm bằng trình điều khiển pymongo ...
Nhấp vào Kết nối. ....
Nhấp vào Chọn phương thức kết nối ..
Nhấp vào Kết nối ứng dụng của bạn. ....
Chọn Python và phiên bản trình điều khiển của bạn. ....
Sao chép chuỗi kết nối được cung cấp ..
Định cấu hình chuỗi kết nối được cung cấp ..

DB nào là tốt nhất cho django?

Django hỗ trợ SQLite 3.9.0 trở lên.SQLite cung cấp một sự thay thế phát triển tuyệt vời cho các ứng dụng chủ yếu là chỉ đọc hoặc yêu cầu một dấu chân cài đặt nhỏ hơn.Tuy nhiên, như với tất cả các máy chủ cơ sở dữ liệu, có một số khác biệt dành riêng cho SQLite mà bạn nên biết.SQLite 3.9. 0 and later. SQLite provides an excellent development alternative for applications that are predominantly read-only or require a smaller installation footprint. As with all database servers, though, there are some differences that are specific to SQLite that you should be aware of.

Django có thể làm việc với NoQuery không?

Cơ sở dữ liệu NoQuery không được chính thức hỗ trợ bởi chính Django.Tuy nhiên, có một số dự án phụ và dĩa cho phép chức năng NoQuery trong Django.. There are, however, a number of side projects and forks which allow NoSQL functionality in Django.