Persistance des données Python - module PyMongo

MongoDB est un document orienté NoSQLbase de données. Il s'agit d'une base de données multiplateforme distribuée sous licence publique côté serveur. Il utilise des documents de type JSON comme schéma.

Afin de fournir la capacité de stocker d'énormes données, plusieurs serveurs physiques (appelés fragments) sont interconnectés, de sorte qu'une évolutivité horizontale est obtenue. La base de données MongoDB est constituée de documents.

Un document est analogue à une ligne dans une table de base de données relationnelle. Cependant, il n'a pas de schéma particulier. Le document est une collection de paires clé-valeur - similaire au dictionnaire. Cependant, le nombre de paires kv dans chaque document peut varier. Tout comme une table dans une base de données relationnelle a une clé primaire, le document de la base de données MongoDB a une clé spéciale appelée"_id".

Avant de voir comment la base de données MongoDB est utilisée avec Python, comprenons brièvement comment installer et démarrer MongoDB. La version communautaire et commerciale de MongoDB est disponible. La version communautaire peut être téléchargée sur www.mongodb.com/download-center/community .

En supposant que MongoDB est installé dans c: \ mongodb, le serveur peut être appelé à l'aide de la commande suivante.

c:\mongodb\bin>mongod

Le serveur MongoDB est actif au numéro de port 22017 par défaut. Les bases de données sont stockées dans le dossier data / bin par défaut, bien que l'emplacement puisse être modifié par l'option –dbpath.

MongoDB a son propre ensemble de commandes à utiliser dans un shell MongoDB. Pour appeler le shell, utilisezMongo commander.

x:\mongodb\bin>mongo

Une invite de shell similaire à l'invite de shell MySQL ou SQLite apparaît devant laquelle les commandes NoSQL natives peuvent être exécutées. Cependant, nous sommes intéressés par la connexion de la base de données MongoDB à Python.

PyMongoLe module a été développé par MongoDB Inc lui-même pour fournir une interface de programmation Python. Utilisez l'utilitaire pip bien connu pour installer PyMongo.

pip3 install pymongo

En supposant que le serveur MongoDB est opérationnel (avec mongod commande) et écoute sur le port 22017, nous devons d'abord déclarer un MongoClientobjet. Il contrôle toutes les transactions entre la session Python et la base de données.

from pymongo import MongoClient
client=MongoClient()

Utilisez cet objet client pour établir la connexion avec le serveur MongoDB.

client = MongoClient('localhost', 27017)

Une nouvelle base de données est créée avec la commande suivante.

db=client.newdb

La base de données MongoDB peut avoir de nombreuses collections, similaires aux tables d'une base de données relationnelle. Un objet Collection est créé parCreate_collection() fonction.

db.create_collection('students')

Maintenant, nous pouvons ajouter un ou plusieurs documents dans la collection comme suit -

from pymongo import MongoClient
client=MongoClient()
db=client.newdb
db.create_collection("students")
student=db['students']
studentlist=[{'studentID':1,'Name':'Juhi','age':20, 'marks'=100},
{'studentID':2,'Name':'dilip','age':20, 'marks'=110},
{'studentID':3,'Name':'jeevan','age':24, 'marks'=145}]
student.insert_many(studentlist)
client.close()

Pour récupérer les documents (similaire à la requête SELECT), nous devons utiliser find()méthode. Il renvoie un curseur à l'aide duquel tous les documents peuvent être obtenus.

students=db['students']
docs=students.find()
for doc in docs:
   print (doc['Name'], doc['age'], doc['marks'] )

Pour trouver un document particulier au lieu de tous dans une collection, nous devons appliquer un filtre à la méthode find (). Le filtre utilise des opérateurs logiques. MongoDB a son propre ensemble d'opérateurs logiques comme ci-dessous -

Sr. Non Opérateur MongoDB et opérateur logique traditionnel
1

$eq

égal à (==)

2

$gt

supérieur à (>)

3

$gte

supérieur ou égal à (> =)

4

$in

si égal à n'importe quelle valeur du tableau

5

$lt

moins de (<)

6

$lte

inférieur ou égal à (<=)

sept

$ne

différent de (! =)

8

$nin

si ce n'est égal à aucune valeur du tableau

Par exemple, nous souhaitons obtenir la liste des étudiants de plus de 21 ans. Utilisation de l'opérateur $ gt dans le filtre pourfind() méthode comme suit -

students=db['students']
docs=students.find({'age':{'$gt':21}})
for doc in docs:
   print (doc.get('Name'), doc.get('age'), doc.get('marks'))

Le module PyMongo fournit update_one() et update_many() méthodes pour modifier un ou plusieurs documents satisfaisant à une expression de filtre spécifique.

Mettons à jour l'attribut des marques d'un document dont le nom est Juhi.

from pymongo import MongoClient
client=MongoClient()
db=client.newdb
doc=db.students.find_one({'Name': 'Juhi'})
db['students'].update_one({'Name': 'Juhi'},{"$set":{'marks':150}})
client.close()