WEBINARHow to build smarter AI apps with Python and MongoDB. Register now >
NEWHow to build smarter AI apps with Python and MongoDB. Register now >

Comment utiliser Python avec MongoDB

Effectuer un suivi à l'aide d'Atlas
Connectez-vous gratuitement dès aujourd’hui

Python, le meilleur langage de programmation pour la data science, et MongoDB, avec son schéma flexible et dynamique, sont parfaitement adaptés à la création d'applications web modernes, d'API JSON et de processeurs de données, pour n'en citer que quelques-uns. MongoDB dispose d'un pilote Python natif et d'une équipe d'ingénieurs qui veillent à ce que MongoDB et Python fonctionnent parfaitement ensemble.

Table des matières
En quoi consiste Python ?

Python, le couteau suisse des langages typés dynamiques actuels, offre une prise en charge complète des tâches courantes de manipulation et de traitement des données, ce qui en fait l'un des meilleurs langages de programmation pour la science des données et le développement Web. Le dictionnaire natif de Python et les types de données de liste le placent juste derrière JavaScript pour la manipulation de documents JSON, et en font un outil idéal pour travailler avec BSON. PyMongo, la bibliothèque de pilotes MongoDB standard pour Python, est facile à utiliser et propose une API intuitive pour accéder aux bases de données, aux collections et aux documents.

Les objets récupérés dans MongoDB par PyMongo sont compatibles avec les dictionnaires et les listes, ce qui nous permet de les manipuler, de les itérer et de les imprimer facilement.

Comment MongoDB stocke les données

MongoDB stocke les données dans les documents de type JSON :

Les dictionnaires Python présentent l'aspect suivant :

Vous trouverez ci-après un aperçu de la manière de mettre en place et d'exploiter le potentiel de cette puissante combinaison.

Conditions préalables

Téléchargez et installez Python sur votre machine. Pour vérifier la conformité de votre installation, tapez python --version sur votre ligne de commande. Vous devriez obtenir quelque chose de similaire à :

Vous pouvez suivre les exemples de ce tutoriel relatifs à Python et MongoDB même si vous ne connaissez pas Python.

Nous vous recommandons de définir un cluster MongoDB cluster de niveau gratuit Atlas pour ce tutoriel.
Lancez dès maintenant votre cluster free tier
En savoir plus sur Atlas
Connexion de Python et MongoDB Atlas

PyMongo dispose d'un ensemble de paquets pour l'interaction entre Python et MongoDB. Pour le tutoriel suivant, commencez par créer un environnement virtuel, puis activez-le.

Maintenant que vous êtes dans votre environnement virtuel, vous pouvez installer PyMongo. Dans votre terminal, tapez :

nous pouvons utiliser PyMongo comme une bibliothèque Python MongoDB dans notre code avec une instruction d'importation.

Création d'une base de données MongoDB dans Python

La première étape pour connecter Python à Atlas consiste à créer un cluster. Vous pouvez suivre les instructions de la documentation pour apprendre à créer et définir votre cluster.

Ensuite, créez un fichier nommé pymongo_get_database.py dans n'importe quel dossier pour écrire du code PyMongo. Vous pouvez utiliser n'importe quel éditeur de texte simple, comme Visual Studio Code.

Créez le client mongodb en ajoutant ce qui suit :

Pour créer un MongoClient, vous aurez besoin d'une chaîne de connexion à votre base de données. Si vous utilisez Atlas, vous pouvez suivre les étapes de la documentation pour obtenir cette chaîne de connexion. Utilisez la chaînedeconnexion pour créer le mongoclient et obtenir la connexion à la base de données MongoDB. Modifiez le nom d'utilisateur, le mot de passe et le nom du cluster.

Dans ce tutoriel Python MongoDB , nous allons créer une liste de courses et ajouter quelques articles. Pour cela, nous avons créé une base de données utilisateur_listedachats.

MongoDB ne crée pas de base de données tant qu'elle ne contient pas de collections et de documents. Créons ensuite une collection.

Création d'une collection dans Python

Pour créer une collection, transmettez le nom de la collection à la base de données. Dans un nouveau fichier appelé PyMongo_test_insert.py, ajoutez le code suivant.

Ceci crée une collection nommée utilisateur_1_articles dans la base de données utilisateur_listedachats.

Insertion de documents dans Python

Pour insérer plusieurs documents à la fois, utilisez la méthode pymongo insert_many().

Insérons un troisième document sans spécifier le champ _id. Cette fois, nous ajoutons un champ de type ‘date’. Pour ajouter une date à l'aide de PyMongo, utilisez le paquet Python dateutil.

Commencez par installer le paquet en utilisant la commande suivante :

Ajoutez ce qui suit à pymongo_test_insert.py:

Nous utilisons la méthode insert_one() pour insérer un seul document.

Ouvrez la ligne de commande et naviguez jusqu'au dossier dans lequel vous avez enregistré pymongo_test_insert.py.

Exécutez le fichier en utilisant la commande :

Connectons-nous à l'UI de MongoDB Atlas et vérifions ce que nous avons jusqu'à présent.

Connectez-vous à votre cluster Atlas et cliquez sur le bouton des collections.

Sur le côté gauche, vous pouvez voir la base de données et le nom de la collection que nous avons créés. Si vous cliquez sur le nom de la collection, vous pouvez également consulter les données :

vue de la base de données et du nom de la collection
visualisation des données par clic

Le champ _id est de type ObjectId par défaut. Si nous ne spécifions pas le champ _id, MongoDB le génère. Les champs présents dans un document ne sont pas tous présents dans les autres. Mais MongoDB ne vous empêche pas de saisir des données — c’est l’essence même d’une base de données sans schéma.

Si nous insérons à nouveau élément_3, MongoDB insérera un nouveau document, avec une nouvelle valeur _id. Cependant, les deux premières insertions généreront une erreur en raison du champ _id, l’identifiant unique.

Requête dans Python

Examinons tous les documents ensemble en utilisant la méthode find(). Pour cela, nous allons créer un fichier séparé pymongo_test_query.py :

Ouvrez la ligne de commande et accédez au dossier où vous avez enregistré pymongo_test_query.py. Exécutez le fichier à l’aide de la commande :

Nous obtenons la liste des objets du dictionnaire en sortie :

liste de dictionnaires

Nous pouvons consulter les données, mais le format n'est pas très bon. Imprimons donc les noms des articles et leur catégorie en remplaçant la ligne print par ce qui suit :

Bien que MongoDB reçoive l'intégralité des données, nous obtenons une "KeyError" de Python sur le troisième document.

Python KeyError

Pour traiter les erreurs de données manquantes dans Python, utilisez pandas.DataFrames. Les DataFrames sont des structures de données 2D utilisées pour des tâches de traitement de données. La méthode PyMongo find() renvoie des objets du dictionnaire qui peuvent être convertis en dataframe en une seule ligne de code.

Installez la bibliothèque pandas comme suit :

Maintenant, importez la bibliothèque pandas en ajoutant la ligne suivante au début du fichier :

Et remplacez le code dans la boucle avec ce qui suit pour traiter KeyError en une étape :

Les erreurs sont remplacées par NaN et NaT pour les valeurs manquantes.

NaN et NaT pour les valeurs manquantes.
indexation dans Python MongoDB

Le nombre de documents et de collections dans une base de données réelle ne cesse d'augmenter. La recherche de documents spécifiques - par exemple, des documents contenant la mention « farine tout usage » parmi leurs ingrédients - dans une très grande collection peut prendre beaucoup de temps. Les index rendent la recherche dans les bases de données plus rapide et plus efficace, et réduisent le coût des requêtes lors des opérations de tri, de comptage et de mise en correspondance.

MongoDB définit des index au niveau de la collection.

Pour que l'index ait plus de sens, il faut ajouter d'autres documents à notre collection. Insérez plusieurs documents à la fois en utilisant la méthode insert_many(). Pour les exemples de documents, copiez le code de Github et exécutez python pymongo_test_insert_more_items.py dans votre terminal.

Disons que nous voulons les articles qui appartiennent à la catégorie ‘food’ :

Pour exécuter la requête ci-dessus, MongoDB doit analyser tous les documents. Pour le vérifier, téléchargez Compass. Connectez-vous à votre cluster en utilisant la chaîne de connexion. Ouvrez la collection et accédez à l'onglet Explain Plan (Plan explicatif). Dans « filter » (filtre), indiquez les critères ci-dessus et affichez les résultats :

Résultats de la requête sans index

Notez que la requête analyse 14 documents pour obtenir cinq résultats.

Créons un index unique dans le champ « category » (catégorie). Dans un nouveau fichier nommé pymongo_index.py, ajoutez le code suivant.

Expliquez à nouveau le même filtre dans l'UI de Compass :

Résultats de la requête avec index

Cette fois-ci, seuls cinq documents sont analysés en raison de l'index des catégories. Nous ne voyons pas de différence significative au niveau du temps d'exécution, en raison du petit nombre de documents. Mais nous constatons une réduction considérable du nombre de documents analysés pour la requête. Les index permettent également d'optimiser les performances des agrégations. Les agrégations n'entrent pas dans le cadre de ce tutoriel, mais en voici un aperçu.

Conclusion

Dans ce tutoriel Python MongoDB, nous avons appris les bases de PyMongo et effectué des opérations simples de base de données. L'étape suivante consiste à explorer l'utilisation de PyMongo pour effectuer des opérations CRUD avec les données de l'entreprise. Si vous n'avez pas suivi ce tutoriel, commencez dès maintenant en installant MongoDB Atlas gratuitement. Il existe également un cours sur ce sujet spécifique à l'adresse MongoDB University.

Prêt à démarrer?

Lancez un nouveau cluster ou migrez vers MongoDB Atlas sans interruption de service et connectez-vous à Python dès aujourd'hui.
Essayer maintenant

FAQ