Le but de ce didacticiel de programmation de base de données Python est de fournir une introduction en douceur à l'utilisation d'une base de données NoSQL en tant que magasin de données pour les applications Python. Le public visé est les développeurs de niveau débutant ou les développeurs de niveau intermédiaire qui sont familiarisés avec l'utilisation de bases de données orientées SQL telles qu'Oracle, SQL Server ou MySQL. Les démonstrations de cet article seront parallèles aux démonstrations utilisées dans d'autres articles de programmation de base de données SQL impliquant Python, tels que Python Database Programming with SQL Express for Beginners, et utiliseront également Python 3.
Qu'est-ce que NoSQL ?
La popularité de Python continue de croître en popularité en partie à cause de la facilité avec laquelle il peut fonctionner avec les nouvelles technologies. L'une de ces « nouvelles » technologies est l'utilisation de bases de données « NoSQL ». L'une des caractéristiques les plus attrayantes de ces types de bases de données est le fait qu'il n'y a, comme son nom l'indique, généralement aucun langage de requête supplémentaire, comme l'une des nombreuses variantes apparemment de SQL, qui doit être appris pour travailler avec la base de données. d'un point de vue programmatique. Cela facilite grandement le développement d'applications car les structures de données natives du langage de programmation et sa syntaxe sont de facto le "langage de requête", à condition bien sûr que les modules appropriés soient ajoutés à l'environnement de développement.
Bases de données NoSQL, en plus de principalement n'utilisant pas de langage de requête, structurent également les données en interne d'une manière très différente des bases de données SQL. Un développeur qui est plus habitué au paradigme de programmation SQL doit adapter sa réflexion pour correspondre à la façon dont NoSQL fait des affaires. En allant plus loin sous le capot, la conception des serveurs de base de données NoSQL partage la même dissemblance. Les serveurs de base de données NoSQL sont davantage axés sur la vitesse et l'évolutivité avec une "cohérence éventuelle", par opposition aux serveurs de base de données SQL qui sont davantage axés sur la cohérence immédiate.
Qu'est-ce que MongoDB ?
MongoDB est l'une des nombreuses bases de données "NoSQL". Comme MariaDB, il utilise son propre système de nom d'utilisateur et de mot de passe pour la gestion des accès. MongoDB, en plus d'offrir un logiciel serveur téléchargeable sans frais, propose également une option d'introduction gratuite basée sur le cloud (via son Atlas offre) qui atténue le besoin de télécharger et de configurer une instance. Les démonstrations de ce didacticiel de programmation de base de données utiliseront l'instance gratuite de MongoDB hébergée dans le cloud.
Comme c'est le cas avec Python et tout serveur de base de données, un module de pilote de base de données supplémentaire, à savoir PyMongo , est requis pour que Python communique avec le serveur MongoDB et toutes les bases de données qu'il contient. De plus, comme tout serveur de base de données, MongoDB fournit un outil de gestion compagnon appelé MongoDB Shell . Les démonstrations de cet article utiliseront une base de données MongoDB créée à l'aide de cet outil. Notez que MongoDB Shell est l'un des nombreux outils de gestion qui existent pour MongoDB.
- Téléchargement du serveur communautaire MongoDB
- Offre de lancement MongoDB basée sur le cloud à coût zéro
- Téléchargement du shell MongoDB
Veuillez noter que les liens affichés étaient actifs au moment de la rédaction de cet article. Si les liens ne sont plus actifs, ces produits peuvent être téléchargés via son moteur de recherche préféré.
Comment configurer MongoDB pour le développement de logiciels
L'offre d'introduction basée sur le cloud à coût zéro de MongoDB la configuration est entièrement basée sur le Web. Il peut être facilement lié à son compte Google à des fins d'authentification unique. Gardez simplement à l'esprit les mises en garde suivantes :
- Choisissez un service d'hébergement de données physiquement proche. Le service d'hébergement présenté dans cet article qui se trouve en Virginie n'est peut-être pas idéal pour quelqu'un qui est loin de là.
- Le mot de passe utilisé pour connecter une application au serveur de base de données doit être enregistré en toute sécurité car il ne peut pas être récupéré en cas de perte. Il peut uniquement être réinitialisé.
- Le nom du cluster, une fois défini, ne peut pas être modifié. Les démonstrations de cet article utiliseront un cluster nommé Cluster0 .
- Assurez-vous que toute adresse IP à partir de laquelle toute application, y compris MongoDB Shell, est configurée dans les paramètres de sécurité.
- Le shell MongoDB peut ne pas avoir de programme d'installation. Assurez-vous toujours d'inclure le chemin d'accès au dossier qui contient cette application dans le chemin du système d'exploitation.
Comment se connecter au serveur de base de données MongoDB
Une fois la configuration réussie du cluster MongoDB basé sur le cloud, il sera nécessaire de noter la chaîne de connexion particulière utilisée pour s'y connecter. Les chaînes ci-dessous peuvent également être récupérées en vous connectant au site MongoDB Atlas et en cliquant sur Se connecter bouton :
Figure 1 - le tableau de bord MongoDB Atlas avec le bouton de connexion en surbrillance
Notez que les paramètres tels que le nom d'utilisateur et le mot de passe de la base de données et les plages d'adresses IP autorisées pour la connexion peuvent être définis respectivement dans les liens Accès à la base de données et Accès au réseau.
Vous trouverez ci-dessous deux exemples de connexion. Le premier est pour MongoDB Shell.
MongoDB :Connexion à partir de la ligne de commande
Ouvrir une invite de commande Windows est expliqué dans Python Database Programming with SQL Express for Beginners sous Ouvrir l'invite de commande Windows titre.
Figure 2 - Connexion via la ligne de commande à MongoDB Shell
Notez que la commande pour ouvrir le shell MongoDB varie selon le système d'exploitation. Le nom du cluster peut varier et les paramètres en surbrillance dans la commande devront être modifiés en fonction des détails de la configuration MongoDB basée sur le cloud. Sous Windows, cette commande s'appelle mongosh . Notez que le nom de la base de données RazorDemo est inclus ci-dessous, car c'est la base de données qui sera utilisée dans les démonstrations de ce didacticiel de programmation. La commande accepte également un paramètre supplémentaire pour le mot de passe comme indiqué ci-dessous :
Figure 3 – Authentification avec le mot de passe dans la ligne de commande.
Notez que, bien qu'il soit pratique à des fins de développement d'utiliser le mot de passe dans la ligne de commande, au lieu de devoir le saisir à chaque fois, n'oubliez pas que le mot de passe apparaît dans l'historique des commandes précédemment exécutées. Cette option ne doit pas être utilisée dans les environnements de développement où d'autres utilisateurs peuvent accéder à l'historique des commandes précédentes.
De plus, j'espère que personne ne pensait que j'utiliserais réellement 123456 comme mot de passe, non ?
Figure 4 – Juste vérification 🙂
Notez que dans les deux exemples ci-dessus, le ^ Le caractère est utilisé comme symbole de continuation de ligne dans l'invite de commande Windows.
Connexion de MongoDB à partir de Python
La chaîne suivante, avec les modifications appropriées, peut être placée dans le code Python pour être utilisée par PyMongo conducteur :
Figure 5 – Connexion via Python et PyMongo
Dans la chaîne de connexion ci-dessus, le nom de la base de données RazorDemo sera utilisé à la place de myFirstDatabase .
Comment créer une base de données dans MongoDB
MongoDB ne "crée" pas une base de données tant que cette base de données n'est pas "utilisée" et que les données y sont réellement écrites. L'image ci-dessous montre une connexion réussie au service MongoDB Atlas à l'aide de RazorDemo base de données, mais aucune base de données de ce type n'est répertoriée lors de l'utilisation de show dbs commande :
Figure 6 – Pas de base de données RazorDemo… pour le moment
Comment "utiliser" une base de données dans MongoDB
Dans MongoDB, une base de données est "utilisée" chaque fois qu'elle est connectée directement à l'aide de la chaîne de requête ou lorsque le nom de la base de données est l'argument de use commande. Notez que l'appel de cette commande sur la base de données actuellement sélectionnée affiche un message différent du passage à cette base de données :
Figure 7 – Basculer entre les bases de données
Pour réellement « créer » la base de données, certaines données doivent être insérées. La RazorDémo base de données des articles précédents, Premiers pas avec les pages Razor à l'aide de C# et Python Database Programming with SQL Express for Beginners, utilise deux tables, à savoir Artists et Albums . Dans MongoDB, ce qu'une base de données orientée SQL appelle une table est appelé une collection . Création de deux entrées dans des collections nommées Artistes et Albums , respectivement, créeront à la fois la base de données et les collections.
Chaque entrée d'une collection est appelée document . Ceci est analogue à un enregistrement dans une table de base de données orientée SQL.
Remarque, tout comme il est important pour une application majeure de sauvegarder la table de création instructions dans une base de données orientée SQL, le même raisonnement s'appliquera également aux commandes initiales de création de base de données et de collection pour une base de données MongoDB pour une application majeure.
Les commandes ci-dessous créeront les artistes collection en y insérant un seul document, puis interrogez les Artistes collection pour vérifier le succès de l'opération d'insertion. Notez comment l'opération d'insertion utilise la syntaxe JSON :
db.Artists.insertOne({artist_name: "Skeered Tigon Stripes"}) db.Artists.find({}) Listing 1 - Inserting a new document.
Ces commandes donnent la sortie suivante dans MongoDB Shell :
Figure 8 – Création de la collection Artistes
Le _id ci-dessus a été créé automatiquement et est unique dans la collection, semblable à une valeur de clé primaire générée automatiquement dans une base de données orientée SQL.
Remarque, MongoDB Shell peut signaler que le .insert() la commande est obsolète. Cet exemple utilise le .insertOne() commande car c'est l'une des alternatives fournies.
Une syntaxe similaire peut être utilisée pour créer les Albums collecte :
db.Albums.insertOne({artist_name: "Skeered Tigon Stripes",album_name: "Genetically Engineered Critters"}) db.Albums.find({}) Listing 2 - Inserting another new document
Figure 9 – Création de la collection Albums
Remarque, l'avertissement lié à caniuse-lite apparaît lorsque vous appuyez sur Entrée clé avant de terminer la commande pour créer un document. MongoDB Shell permettra à une commande d'être répartie sur plusieurs lignes avant de la terminer. Cet avertissement indique que MongoDB Shell utilise peut-être un pilote obsolète et qu'il devra être mis à jour dans une future version.
Il ne semble pas interrompre le processus de création de document.
Quelques documents supplémentaires pour les Albums collecte :
db.Albums.insertOne({ artist_name: "Skeered Tigon Stripes", album_name: "Volume Control: No" }) db.Albums.insertOne({ artist_name: "Skeered Tigon Stripes", album_name: "Verse Vica }) db.Albums.insertOne({ artist_name: "Skeered Tigon Stripes", album_name: "Rotten to the Core" }) db.Albums.find({}) Listing 3 - Additional documents for the Albums collection
Figure 10 – Nouveaux documents supplémentaires de l'Album
AUCUNE contrainte de clé étrangère
Comme MongoDB n'est pas un système de gestion de base de données relationnelle, il ne fournit pas de mécanisme pour appliquer les types de contraintes de clé étrangère utilisées dans les tables de base de données orientées SQL entre les collections. Il s'attend à ce que l'application maintienne et fasse respecter ces relations. Dans le contexte de MongoDB Shell, il incombe au développeur de saisir correctement les valeurs pour s'assurer qu'une relation entre les documents des collections peut être déduite.
Le .deleteOne() La commande peut être utilisée pour supprimer les documents mal saisis :
db.Albums.deleteOne({ artist_name: "Skeered Tigon Stripes", album_name: "I Typed the Album Name Wrong" }) Listing 4 - Deleting a document.
Notez que si un document ne correspond pas aux paramètres saisis, aucune erreur ne s'affichera, à la place, le message de confirmation indiquera que rien n'a été supprimé :
Figure 11 – Message de confirmation indiquant qu'aucun document n'a été supprimé
Le .deleteMany() La commande peut être utilisée pour supprimer plusieurs enregistrements qui correspondent à un critère JSON. La commande ci-dessous supprime tous les documents des collections Albums dans lesquels le nom_artiste la valeur n'est pas Skeered Tigon Stripes :
db.Albums.deleteMany({artist_name: {$ne : "Skeered Tigon Stripes" }}) Listing 5 - Deleting multiple documents based on criteria.
Figure 12 – Suppression de plusieurs enregistrements
Réflexions finales sur la programmation de bases de données Python avec MongoDB
Maintenant que nous avons appris à nous connecter à une base de données MongoDB et à créer une version NO SQL d'une table avec des "enregistrements", nous pouvons passer à l'utilisation de scripts Python pour insérer des données dans notre base de données MongoDB. Nous poursuivrons cette discussion dans la deuxième - et dernière - partie de ce didacticiel de programmation de base de données Python :Développement de bases de données Python et MongoDB.