Cours
Prêt à connecter votre cluster MongoDB à votre projet Python ? Vous avez de la chance. Dans ce tutoriel, vous allez voir ce qu’est PyMongo, pourquoi c’est le package de référence pour les développeurs Python qui utilisent MongoDB comme base de données, et comment établir votre première connexion en un minimum de code.
Si vous débutez, n’hésitez pas à suivre notre cours Introduction to Using MongoDB for Data Science in Python.
Qu’est-ce que PyMongo ?
Alors, concrètement, qu’est-ce que le package Python PyMongo ? Il s’agit du pilote Python officiel de MongoDB, qui permet aux développeurs de se connecter à des bases de données MongoDB, de les interroger et d’interagir avec elles depuis leurs applications Python.
C’est la méthode recommandée pour interagir avec vos bases de données MongoDB depuis Python, et elle est idéale pour développer des applications web grâce à sa compatibilité avec Flask et Django. PyMongo aide vraiment les développeurs Python à exploiter pleinement MongoDB dans leurs applications.
Voyons comment bien démarrer avec PyMongo en exécutant un exemple d’application utilisateur CRUD (create, read, update, delete) pour montrer à quel point il est simple de se lancer avec très peu de code !
Prérequis
Pour suivre ce tutoriel dans de bonnes conditions, assurez-vous de disposer des prérequis suivants :
- Un compte MongoDB Atlas
- Un IDE de votre choix (ce tutoriel utilise un notebook Google Colab)
- Python 3.6+
pipinstallé (si vous utilisez un IDE autre qu’un notebook Google Colab).
Configuration d’un cluster MongoDB
Avant de connecter notre base de données MongoDB à notre projet Python, nous devons créer un cluster. Pour cela, connectez-vous à votre compte MongoDB Atlas et créez un nouveau projet si vous n’en avez pas encore un.
Ensuite, créez un cluster au sein de ce projet.

Vous êtes maintenant prêt à déployer votre cluster. Cliquez sur l’offre « Free » (gratuite pour toujours !) et choisissez un nom pour votre cluster ou conservez le nom par défaut.
Gardez à l’esprit qu’une fois le nom du cluster défini, vous ne pourrez plus le modifier. Choisissez le fournisseur cloud (AWS, Google Cloud ou Azure) et vérifiez que vous êtes dans la bonne région.

Cliquez sur le bouton vert « Create Deployment », et nous pouvons poursuivre.
Vous devrez choisir un « Username » et un « Password » pour votre cluster. Optez pour des identifiants faciles à retenir (mais plus sûrs que ceux de ce tutoriel !) et sécurisés, car vous en aurez besoin à chaque accès à votre chaîne de connexion.
Pensez également à cliquer sur « Preload sample dataset » pour vous faciliter la vie. Cela chargera automatiquement l’ensemble de données d’exemple « sample_mflix » avec lequel nous allons travailler.
Cliquez sur « Create Database User » pour continuer.

Vous pouvez maintenant vous connecter à votre cluster ! Plusieurs options existent, mais puisque ce tutoriel porte sur PyMongo, nous allons nous connecter via les pilotes (Drivers).

Choisissez « Python » et la version souhaitée (nous opterons pour la 4.7 ou ultérieure), et vous verrez votre chaîne de connexion. Votre nom d’utilisateur et votre mot de passe sont automatiquement renseignés pour plus de simplicité.

Maintenant que vous avez votre chaîne de connexion, conservez-la en lieu sûr. Vous pouvez cliquer sur le bouton vert « Done ».
Voici à quoi ressemble votre cluster une fois configuré.
![Cluster une fois configuré]](https://media.datacamp.com/cms/ad_4nxf2qowpihkjm1stvlc-ddf-wiee5pc64vmyac6z-hvxdhkucer83idgex9z73erlpem2bm4vgfq6sfqb8d5opoibgpxvlzlyenuri_fcicaw_7_6lrqpk9_djmzyjowquwtdndjzg.png)
Accédez au menu « Network Access » dans la barre latérale gauche et vérifiez que votre adresse IP est bien configurée. Pour les besoins de ce tutoriel (même si ce n’est évidemment pas recommandé en production), vous pouvez autoriser l’accès « From Anywhere » pour simplifier.
Avertissement production : pour des applications en production, mettez sur liste blanche des IP spécifiques dans Atlas : Network Access > IP Access List.
Passons maintenant dans l’IDE de votre choix pour manipuler les données dont nous disposons !
Se connecter et réaliser des opérations CRUD avec PyMongo
Première étape : installer pymongo avec pip. Nous installons également getpass dans cette étape pour garder notre connexion sécurisée :
!pip install pymongo
Ensuite, configurons la connexion MongoDB à notre cluster. Nous allons utiliser MongoClient pour établir la connexion.
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)
Retournez dans votre cluster pour relever le nom de la base et de la collection. La base s’appelle sample_mflix et la collection users.
Voici un exemple des informations présentes dans ce cluster d’exemple : l’ObjectId de chaque document, ainsi que le nom, l’email et le mot de passe de chaque utilisateur.

Faisons un test rapide pour vérifier que nous pouvons lire nos documents depuis le script :
database = client["sample_mflix"]
collection = database["users"]
for document in collection.find().limit(20):
print(document)
Si tout se passe bien, vous verrez ceci :

Remarque : l’ensemble de données sample_mflix contient des mots de passe en clair à des fins de démonstration. En situation réelle, hachez toujours les mots de passe (par ex. : bcrypt ou Argon2) et évitez de coder en dur des identifiants.
Nous venons aussi de lire les informations de notre cluster ! Passons à la création d’un nouvel utilisateur.
new_user = {
"name": "Anaiya Raisinghani",
"email": "fakeanaiya@gmail.com",
"password": "pleasedonothackme"
}
# insert the document
result = collection.insert_one(new_user)
print(result.inserted_id)
Nous pouvons voir l’ID de notre nouvel utilisateur. En retournant dans le cluster, on peut rechercher cet ID et vérifier que le document a bien été ajouté.

Mettons maintenant à jour le document que nous venons de créer.
Remarque : BSON est fourni avec PyMongo — aucune installation supplémentaire n’est nécessaire. ObjectId est le format d’ID unique par défaut de MongoDB.
from bson import ObjectId
collection.update_one(
{"_id": result.inserted_id}, # using the same document that we inserted above
{"$set": {"password": "help!ivebeenhacked!!"}}
)

Comme on peut le voir, le mot de passe a été mis à jour, et la modification est visible dans l’interface MongoDB Atlas.
Supprimons maintenant ce document.
delete_user = collection.delete_one({"_id": result.inserted_id})
print("Deleted users:", delete_user.deleted_count)
Le nombre d’utilisateurs supprimés devrait être « 1 ». Vérifions dans l’interface MongoDB Atlas (par acquis de conscience !).

Nous avons supprimé notre document avec succès !
Conclusion
Dans ce tutoriel, vous avez passé vos 10 premières minutes avec PyMongo — le pilote Python officiel de MongoDB. Nous avons lu les documents de notre collection, créé un nouvel utilisateur, mis à jour cet utilisateur, puis l’avons supprimé.
Pour aller plus loin avec PyMongo, consultez le cours Introduction to Using MongoDB for Data Science in Python et consultez la documentation officielle.
FAQs
Quels sont les erreurs courantes lors de la connexion de PyMongo à MongoDB ?
Les problèmes fréquents incluent une chaîne de connexion incorrecte, des restrictions réseau (liste blanche d’IP) ou des échecs d’authentification. Vérifiez attentivement vos identifiants et vos paramètres réseau en cas d’échec de connexion.
PyMongo prend-il en charge la programmation asynchrone ?
PyMongo ne prend pas en charge nativement l’asynchrone. Si vous avez besoin d’opérations async, envisagez Motor, le pilote Python asynchrone officiel de MongoDB.
PyMongo peut-il gérer des transactions ?
Oui, PyMongo prend en charge les transactions ACID multi-documents, à condition d’utiliser des replica sets ou des clusters fragmentés (sharded) MongoDB. Les transactions ne sont pas disponibles sur des déploiements standalone.
Comment gérer le pooling de connexions avec PyMongo ?
PyMongo gère automatiquement le pooling de connexions en arrière-plan. Vous pouvez configurer des paramètres (taille du pool, timeouts, etc.) via les options de MongoClient si besoin.
Puis-je utiliser PyMongo avec Pandas pour des tâches d’analyse de données ?
Absolument ! Vous pouvez récupérer des données MongoDB avec PyMongo, puis les charger directement dans des DataFrames Pandas pour l’analyse et la manipulation.

