J'essaye de connecter mon instance django à un cluster mongo db en utilisant django. J'ai vérifié à partir de diverses sources et la façon dont il se rapproche du travail est:
DATABASES dict suivantes dans settings.py 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
}
}
Il trouve vraiment le point final mais j'obtiens une erreur bizarre:
pymongo.errors.ServerSelectionTimeoutError: connexion fermée, connexion fermée, connexion fermée
est-ce que quelqu'un a déjà résolu ce problème?
5 Réponses :
Je viens de configurer Djongo et MongoDB Atlas avec les éléments suivants:
DATABASES = {
'default': {
'ENGINE': 'djongo',
'NAME': '<db name>',
'HOST': 'mongodb+srv://<db username>:<db password>@....mongodb.net/test?retryWrites=true',
'USER': '<db username>',
'PASSWORD': '<db password>',
}
}
J'espère que cela vous aidera!
Assurez-vous que Django est installé. "pip install django".
Assez semblable au mien ... bien que le diable se cache dans les détails. Je vais vérifier et vous faire savoir
J'ai appliqué le modèle que vous avez publié, ajouté mes informations d'identification et mes valeurs et ne fonctionne toujours pas. J'ai également essayé d'échapper à mon mot de passe. Toujours rien. Juste pour être sûr, pourriez-vous poster une capture d'écran de l'endroit où le nom de la base de données est vu, pour vérifier que je ne mets pas un mauvais nom de base de données (et peut-être que je mets le cluster). Merci
une idée sur la façon de le connecter en utilisant mongoengine ??
Je n'ai pas pu faire fonctionner cette méthode - même avec un mot de passe généré par l'atlas sans caractères géniaux. J'ai remarqué que djongo était en train de désinstaller ma version 3.1 installée de django et d'installer django en 3.0.5 - je ne sais pas si c'est la cause, mais la méthode décrite par Nagarjun a fonctionné pour moi.
J'ai réussi à me connecter à mongo atlas avec djongo en utilisant l'extrait de @Market Ahead ici
On dirait qu'ils ne veulent pas que le mot de passe contienne des caractères étranges. Dans ce cas, même l'échappement ne fonctionne pas de manière optimale.
Installez le paquet djongo en utilisant
pip install djongo .
Assurez-vous d'importer le module suivant:
DATABASES = {
'default': {
'ENGINE': 'djongo',
'NAME': '<db_name>',
'HOST': "mongodb+srv://<db_username>:" +
urllib.parse.quote_plus("<db_password>") +
"@........mongodb.net/test?retryWrites=true&ssl=true&ssl_cert_reqs=CERT_NONE&w=majority",
}
}
Configurer les paramètres de la base de données.
import urllib
Cela fonctionne sans aucun piratage comme suit:
pip install dnspython . 'default': {
'ENGINE': 'djongo',
'NAME': '<dbname>',
'CLIENT': {
'host': "mongodb+srv://<username>:" + quote_plus('<password>') + "@<cluster-name>.mongodb.net/test?retryWrites=true&w=majority"
},
}
python manage.py makemigrations python manage.py migrate J'ai essayé la réponse vérifiée mais j'ai eu beaucoup de difficultés. Après une heure de débogage, j'ai essayé cela et cela a fonctionné du premier coup! J'avais déjà dnspython pour d'autres projets. Merci: D
Solution la plus simple et correcte:
Étape 1: Installez djongo et dnspython
pip installer djongo
pip installer dnspython
Étape 2: Modifications dans settings.py:
DATABASES = {
"default": {
"ENGINE": "djongo",
"CLIENT": {
"host": "mongodb+srv://<username>:<password>@<cluster_name>.mongodb.net/?retryWrites=true&w=majority",
"username": "<username>",
"password": "<password>",
"name": "<database_name>",
"authMechanism": "SCRAM-SHA-1",
},
}}
Copie possible de Utiliser pymongo directement dans django
Vous pouvez faire la connexion en utilisant pymongo, pas besoin d'utiliser djongo
En effet, mais dans ce cas, ne contournez-vous pas complètement l'ORM?
utilisez-vous djongo dans un environnement de production?
Pour l'instant, il est en développement, mais le but ultime est de le déplacer en direct. Il s'agit d'un projet personnel et non d'entreprise. Je ne l'essayerais pas en production pour mon entreprise. Non pas parce que ce n'est pas de haute qualité mais parce que j'ai peur des projets d'un seul homme (il y a cependant beaucoup de contributeurs)