Didacticiel sur la persistance des données
Didacticiel sur la persistance des données
Python
Dans ce didacticiel, nous explorerons divers modules Python intégrés et tiers pour stocker et
récupérer des données vers / depuis divers formats tels que des fichiers texte, CSV, JSON et
XML, ainsi que des bases de données relationnelles et non relationnelles. Ce didacticiel présente
également la base de données ZODB, qui est une API de persistance pour les objets Python. Le
format Microsoft Excel est un format de fichier de données très populaire. Ici, nous allons
apprendre à gérer le fichier .xlsx via Python.
Ce didacticiel s'adresse à tous les programmeurs de logiciels qui s'intéressent vivement à
l'apprentissage de la persistance des données en ce qui concerne Python.
Si vous êtes novice en Python, il est suggéré de parcourir les tutoriels liés à Python avant de
poursuivre celui-ci.
Notez que, readline()fonction laisse un caractère '\ n' à la fin. Il existe également une méthode
read () qui lit les données du flux d'entrée standard jusqu'à ce qu'elles soient terminées
parCtrl+D personnage.
>>> x=[Link]()
Hello
Welcome to TutorialsPoint
>>> x
'Hello\nWelcome to TutorialsPoint\n'
De même, print() est une fonction pratique émulant la méthode write () de l'objet stdout.
Tout comme les objets de flux prédéfinis stdin et stdout, un programme Python peut lire et
envoyer des données à un fichier disque ou à une socket réseau. Ce sont aussi des flux. Tout
objet qui a la méthode read () est un flux d'entrée. Tout objet qui a la méthode write () est un flux
de sortie. La communication avec le flux est établie en obtenant une référence à l'objet de flux
avec la fonction open () intégrée.
fonction open ()
Cette fonction intégrée utilise les arguments suivants -
Le paramètre name est le nom du fichier disque ou une chaîne d'octets, le mode est une chaîne
facultative à un caractère pour spécifier le type d'opération à effectuer (lecture, écriture, ajout,
etc.) et le paramètre de mise en mémoire tampon est soit 0, 1 ou -1 indiquant la mise en mémoire
tampon est désactivée, activée ou par défaut du système.
Le mode d'ouverture de fichier est énuméré selon le tableau ci-dessous. Le mode par défaut est
«r»
1 R
Ouvrir pour lecture (par défaut)
2 W
Ouvrir pour l'écriture, tronquer d'abord le fichier
3 X
Créez un nouveau fichier et ouvrez-le pour l'écriture
4 A
Ouvert à l'écriture, en ajoutant à la fin du fichier s'il existe
5 B
Mode binaire
6 T
Mode texte (par défaut)
sept +
Ouvrez un fichier disque pour la mise à jour (lecture et écriture)
Afin d'enregistrer des données dans un fichier, il doit être ouvert en mode «w».
f=open('[Link]','w')
Cet objet fichier agit comme un flux de sortie et a accès à la méthode write (). La méthode write ()
envoie une chaîne à cet objet et est stockée dans le fichier sous-jacent.
string="Hello TutorialsPoint\n"
[Link](string)
Il est important de fermer le flux pour s'assurer que toutes les données restantes dans la
mémoire tampon y sont complètement transférées.
[Link]()
Essayez d'ouvrir '[Link]' en utilisant n'importe quel éditeur de test (tel que le bloc-notes) pour
confirmer la création réussie du fichier.
Pour lire le contenu de «[Link]» par programme, il doit être ouvert en mode «r».
f=open('[Link]','r')
Cet objet se comporte comme un flux d'entrée. Python peut récupérer les données du flux en
utilisantread() méthode.
string=[Link]()
print (string)
Le contenu du fichier est affiché sur la console Python. L'objet File prend également en
chargereadline() méthode qui est capable de lire la chaîne jusqu'à ce qu'elle rencontre le
caractère EOF.
Cependant, si le même fichier est ouvert en mode «w» pour y stocker du texte supplémentaire,
les contenus antérieurs sont effacés. Chaque fois qu'un fichier est ouvert avec l'autorisation
d'écriture, il est traité comme s'il s'agissait d'un nouveau fichier. Pour ajouter des données à un
fichier existant, utilisez «a» pour le mode d'ajout.
f=open('[Link]','a')
[Link]('Python Tutorials\n')
Le fichier maintenant, a une chaîne plus ancienne et nouvellement ajoutée. L'objet fichier prend
également en chargewritelines() pour écrire chaque chaîne d'un objet de liste dans le fichier.
f=open('[Link]','a')
lines=['Java Tutorials\n', 'DBMS tutorials\n', 'Mobile development
tutorials\n']
[Link](lines)
[Link]()
Exemple
le readlines()La méthode renvoie une liste de chaînes, chacune représentant une ligne du
fichier. Il est également possible de lire le fichier ligne par ligne jusqu'à la fin du fichier.
f=open('[Link]','r')
while True:
line=[Link]()
if line=='' : break
print (line, end='')
[Link]()
Production
Hello TutorialsPoint
Python Tutorials
Java Tutorials
DBMS tutorials
Mobile development tutorials
Mode binaire
Par défaut, les opérations de lecture / écriture sur un objet fichier sont effectuées sur des
données de chaîne de texte. Si nous voulons gérer des fichiers de différents autres types tels
que les médias (mp3), les exécutables (exe), les images (jpg) etc., nous devons ajouter le préfixe
«b» au mode lecture / écriture.
L'instruction suivante convertira une chaîne en octets et l'écrira dans un fichier.
f=open('[Link]', 'wb')
data=b"Hello World"
[Link](data)
[Link]()
La conversion d'une chaîne de texte en octets est également possible à l'aide de la fonction
encode ().
data="Hello World".encode('utf-8')
Nous devons utiliser ‘rb’mode pour lire le fichier binaire. La valeur renvoyée de la méthode read
() est d'abord décodée avant l'impression.
f=open('[Link]', 'rb')
data=[Link]()
print ([Link](encoding='utf-8'))
Afin d'écrire des données entières dans un fichier binaire, l'objet entier doit être converti en octets
par to_bytes() méthode.
n=25
n.to_bytes(8,'big')
f=open('[Link]', 'wb')
data=n.to_bytes(8,'big')
[Link](data)
Pour relire un fichier binaire, convertissez la sortie de la fonction read () en entier par la fonction
from_bytes ().
f=open('[Link]', 'rb')
data=[Link]()
n=int.from_bytes(data, 'big')
print (n)
Pour les données en virgule flottante, nous devons utiliser struct module de la bibliothèque
standard de Python.
import struct
x=23.50
data=[Link]('f',x)
f=open('[Link]', 'wb')
[Link](data)
Décompression de la chaîne de la fonction read (), pour récupérer les données flottantes du
fichier binaire.
f=open('[Link]', 'rb')
data=[Link]()
x=[Link]('f', data)
print (x)
f=open('[Link]','w+')
[Link]('Hello world')
[Link](0,0)
data=[Link]()
print (data)
[Link]()
Le tableau suivant résume toutes les méthodes disponibles pour un fichier comme un objet.
1 close()
Ferme le fichier. Un fichier fermé ne peut plus être lu ou écrit.
2 flush()
Videz le tampon interne.
3 fileno()
Renvoie le descripteur de fichier entier.
4 next()
Renvoie la ligne suivante du fichier chaque fois qu'il est appelé. Utilisez l'itérateur next () dans P
5 read([size])
Lit au maximum les octets de taille du fichier (moins si la lecture atteint EOF avant d'obtenir des
6 readline([size])
Lit une ligne entière du fichier. Un caractère de fin de ligne est conservé dans la chaîne.
sept readlines([sizehint])
Lit jusqu'à EOF en utilisant readline () et retourne une liste contenant les lignes.
8 seek(offset[, whence])
Définit la position actuelle du fichier. 0-début 1-courant 2-fin.
9 seek(offset[, whence])
Définit la position actuelle du fichier. 0-début 1-courant 2-fin.
dix tell()
Renvoie la position actuelle du fichier
11 truncate([size])
Tronque la taille du fichier.
12 write(str)
Écrit une chaîne dans le fichier. Il n'y a pas de valeur de retour.
1 os.O_RDONLY
Ouvert en lecture uniquement
2 os.O_WRONLY
Ouvert à l'écriture uniquement
3 os.O_RDWR
Ouvert à la lecture et à l'écriture
4 os.O_NONBLOCK
Ne bloquez pas à l'ouverture
5 os.O_APPEND
Ajouter à chaque écriture
6 os.O_CREAT
Créer un fichier s'il n'existe pas
sept os.O_TRUNC
Tronquer la taille à 0
8 os.O_EXCL
Erreur si la création et le fichier existent
Pour ouvrir un nouveau fichier pour y écrire des données, spécifiez O_WRONLY aussi bien
que O_CREATmodes en insérant l'opérateur pipe (|). La fonction [Link] () renvoie un
descripteur de fichier.
f=[Link]("[Link]", os.O_WRONLY|os.O_CREAT)
Notez que les données sont écrites sur le fichier disque sous la forme d'une chaîne d'octets. Par
conséquent, une chaîne normale est convertie en chaîne d'octets en utilisant la fonction encode
() comme précédemment.
data="Hello World".encode('utf-8')
[Link](f,data)
[Link](f)
Pour lire le contenu d'un fichier à l'aide de la fonction [Link] (), utilisez les instructions suivantes:
f=[Link]("[Link]", os.O_RDONLY)
data=[Link](f,20)
print ([Link]('utf-8'))
Notez que la fonction [Link] () a besoin d'un descripteur de fichier et du nombre d'octets à lire
(longueur de la chaîne d'octets).
Si vous souhaitez ouvrir un fichier pour des opérations de lecture / écriture simultanées, utilisez le
mode O_RDWR. Le tableau suivant montre les fonctions importantes liées à l'opération de fichier
dans le module os.
1 [Link](fd)
Fermez le descripteur de fichier.
2 [Link](file, flags[, mode])
Ouvrez le fichier et définissez différents drapeaux selon les drapeaux et éventuellement son mode
3 [Link](fd, n)
Lit au plus n octets à partir du descripteur de fichier fd. Renvoie une chaîne contenant les octets lus
a été atteinte, une chaîne vide est renvoyée.
4 [Link](fd, str)
Ecrivez la chaîne str dans le descripteur de fichier fd. Renvoie le nombre d'octets réellement écrits.
numbers=[10,20,30,40]
file=open('[Link]','w')
[Link](str(numbers))
[Link]()
Pour un fichier binaire, argument à write()La méthode doit être un objet octet. Par exemple, la
liste d'entiers est convertie en octets parbytearray() fonction puis écrit dans le fichier.
numbers=[10,20,30,40]
data=bytearray(numbers)
[Link](data)
[Link]()
Pour lire les données du fichier dans le type de données respectif, une conversion inverse doit
être effectuée.
file=open('[Link]','rb')
data=[Link]()
print (list(data))
Ce type de conversion manuelle, d'un objet au format chaîne ou octet (et vice versa) est très
fastidieux et fastidieux. Il est possible de stocker l'état d'un objet Python sous forme de flux
d'octets directement dans un fichier ou de flux mémoire et de le récupérer dans son état d'origine.
Ce processus est appelé sérialisation et désérialisation.
La bibliothèque intégrée de Python contient divers modules pour le processus de sérialisation et
de désérialisation.
1 pickle
Bibliothèque de sérialisation spécifique à Python
2 marshal
Bibliothèque utilisée en interne pour la sérialisation
3 shelve
Persistance des objets pythoniques
4 dbm
bibliothèque offrant une interface avec la base de données Unix
5 csv
bibliothèque pour le stockage et la récupération des données Python au format CSV
6 json
Bibliothèque pour la sérialisation au format JSON universel
2 Protocol version 1
Ancien format binaire également compatible avec les versions antérieures de Python.
3 Protocol version 2
Introduit dans Python 2.3 fournit un décapage efficace des classes de nouveau style.
4 Protocol version 3
Ajouté dans Python 3.0. recommandé lorsque la compatibilité avec d'autres versions de Python 3
5 Protocol version 4
a été ajouté dans Python 3.4. Il ajoute la prise en charge des très gros objets
Exemple
Le module pickle se compose de la fonction dumps () qui renvoie une représentation sous forme
de chaîne de données picklées.
Production
b'\x80\x03}q\x00(X\x04\x00\x00\x00nameq\x01X\x04\x00\x00\x00Raviq\x02X\x03\
x00\x00\x00ageq\x03K\x17X\x06\x00\x00\x00Genderq\x04X\x01\x00\x00\x00Mq\
x05X\x05\x00\x00\x00marksq\x06KKu.
Exemple
Utilisez la fonction charges () pour décocher la chaîne et obtenir l'objet dictionnaire d'origine.
Les objets décapés peuvent également être stockés de manière persistante dans un fichier
disque, en utilisant la fonction dump () et récupérés en utilisant la fonction load ().
import pickle
f=open("[Link]","wb")
dct={"name":"Ravi", "age":23, "Gender":"M","marks":75}
[Link](dct,f)
[Link]()
#to read
import pickle
f=open("[Link]","rb")
d=[Link](f)
print (d)
[Link]()
Le module pickle fournit également une API orientée objet pour un mécanisme de sérialisation
sous la forme de Pickler et Unpickler Des classes.
Comme mentionné ci-dessus, tout comme les objets intégrés dans Python, les objets des classes
définies par l'utilisateur peuvent également être sérialisés de manière persistante dans un fichier
disque. Dans le programme suivant, nous définissons une classe User avec le nom et le numéro
de mobile comme attributs d'instance. En plus du constructeur __init __ (), la classe remplace la
méthode __str __ () qui renvoie une représentation sous forme de chaîne de son objet.
class User:
def __init__(self,name, mob):
[Link]=name
[Link]=mob
def __str__(self):
return ('Name: {} mobile: {} '. format([Link], [Link]))
Pour décaper l'objet de la classe ci-dessus dans un fichier, nous utilisons la classe pickler et sa
méthode dump ().
Inversement, la classe Unpickler a la méthode load () pour récupérer l'objet sérialisé comme suit
-
déverser()
Cette fonction écrit une représentation octet de l'objet Python pris en charge dans un fichier. Le
fichier lui-même est un fichier binaire avec autorisation d'écriture
charge()
Cette fonction lit les données d'octets d'un fichier binaire et les convertit en objet Python.
L'exemple suivant montre l'utilisation des fonctions dump () et load () pour gérer les objets code
de Python, qui sont utilisés pour stocker des modules Python précompilés.
Le code utilise des compile() pour créer un objet de code à partir d'une chaîne source qui
incorpore des instructions Python.
Le paramètre de fichier doit être le fichier à partir duquel le code a été lu. S'il n'a pas été lu à
partir d'un fichier, passez une chaîne arbitraire.
Le paramètre mode est 'exec' si la source contient une séquence d'instructions, 'eval' s'il y a une
seule expression ou 'single' s'il contient une seule instruction interactive.
L'objet de code de compilation est ensuite stocké dans un fichier .pyc à l'aide de la fonction dump
().
import marshal
script = """
a=10
b=20
print ('addition=',a+b)
"""
code = compile(script, "script", "exec")
f=open("[Link]","wb")
[Link](code, f)
[Link]()
Pour désérialiser, l'objet du fichier .pyc utilise la fonction load (). Puisqu'il retourne un objet code,
il peut être exécuté en utilisant exec (), une autre fonction intégrée.
import marshal
f=open("[Link]","rb")
data=[Link](f)
exec (data)
1 Shelf
Il s'agit de la classe de base pour les implémentations de plateau. Il est initialisé avec un objet de ty
2 BsdDbShelf
Ceci est une sous-classe de la classe Shelf. L'objet dict passé à son constructeur doit prendre en ch
previous (), last () et set_location ().
3 DbfilenameShelf
C'est aussi une sous-classe de Shelf mais accepte un nom de fichier comme paramètre pour son co
dict.
La fonction open () définie dans le module shelve qui renvoie un DbfilenameShelf objet.
Le paramètre de nom de fichier est affecté à la base de données créée. La valeur par défaut du
paramètre d'indicateur est «c» pour l'accès en lecture / écriture. Les autres indicateurs sont 'w'
(écriture seule) 'r' (lecture seule) et 'n' (nouveau avec lecture / écriture).
La sérialisation elle-même est régie par le protocole pickle, la valeur par défaut est aucune. Le
dernier paramètre d'écriture différée par défaut est false. S'il est défini sur true, les entrées
accessibles sont mises en cache. Chaque accès appelle les opérations sync () et close (), le
processus peut donc être lent.
Le code suivant crée une base de données et y stocke les entrées de dictionnaire.
import shelve
s=[Link]("test")
s['name']="Ajay"
s['age']=23
s['marks']=75
[Link]()
Cela créera le fichier [Link] dans le répertoire actuel et stockera les données clé-valeur sous
forme hachée. L'objet Shelf dispose des méthodes suivantes:
1 close()
synchroniser et fermer l'objet dict persistant.
2 sync()
Réécrivez toutes les entrées du cache si l'étagère a été ouverte avec l'écriture différée définie sur
3 get()
renvoie la valeur associée à la clé
4 items()
liste de tuples - chaque tuple est une paire clé / valeur
5 keys()
liste des clés d'étagère
6 pop()
supprime la clé spécifiée et renvoie la valeur correspondante.
sept update()
Mettre à jour l'étagère à partir d'un autre dict / itérable
8 values()
liste des valeurs de conservation
s=[Link]('test')
print (s['age']) #this will print 23
s['age']=25
print ([Link]('age')) #this will print 25
[Link]('marks') #this will remove corresponding k-v pair
Comme dans un objet dictionnaire intégré, les méthodes items (), keys () et values () renvoient
des objets view.
print (list([Link]()))
[('name', 'Ajay'), ('age', 25), ('marks', 75)]
print (list([Link]()))
['name', 'age', 'marks']
print (list([Link]()))
['Ajay', 25, 75]
Pour fusionner des éléments d'un autre dictionnaire avec une étagère, utilisez la méthode update
().
d={'salary':10000, 'designation':'manager'}
[Link](d)
print (list([Link]()))
>>> [Link]('[Link]')
'[Link]'
>>> import dbm
>>> db=[Link]('[Link]','n')
>>> db['name']=Raj Deshmane'
>>> db['address']='Kirtinagar Pune'
>>> db['PIN']='431101'
>>> [Link]()
1 'r'
Ouvrir la base de données existante pour lecture uniquement (par défaut)
2 'w'
Ouvrez la base de données existante pour la lecture et l'écriture
3 'c'
Ouvrez la base de données pour la lecture et l'écriture, en la créant si elle n'existe pas
4 'n'
Créez toujours une nouvelle base de données vide, ouverte à la lecture et à l'écriture
L'objet dbm est un objet de type dictionnaire, tout comme un objet d'étagère. Par conséquent,
toutes les opérations de dictionnaire peuvent être effectuées. L'objet dbm peut invoquer les
méthodes get (), pop (), append () et update (). Le code suivant ouvre «[Link]» avec
l'indicateur «r» et itère sur la collection de paires clé-valeur.
>>> db=[Link]('[Link]','r')
>>> for k,v in [Link]():
print (k,v)
b'name' : b'Raj Deshmane'
b'address' : b'Kirtinagar Pune'
b'PIN' : b'431101'
écrivain()
Cette fonction du module csv renvoie un objet écrivain qui convertit les données en une chaîne
délimitée et les stocke dans un objet fichier. La fonction a besoin d'un objet fichier avec
autorisation d'écriture comme paramètre. Chaque ligne écrite dans le fichier émet un caractère
de nouvelle ligne. Pour éviter tout espace supplémentaire entre les lignes, le paramètre de
nouvelle ligne est défini sur «».
La classe écrivain a les méthodes suivantes -
écrivainow ()
Cette méthode écrit les éléments dans un itérable (liste, tuple ou chaîne), en les séparant par
une virgule.
écrivain ()
Cette méthode prend une liste d'itérables, comme paramètre et écrit chaque élément sous la
forme d'une ligne d'éléments séparés par des virgules dans le fichier.
Example
L'exemple suivant montre l'utilisation de la fonction writer (). Tout d'abord, un fichier est ouvert en
mode «w». Ce fichier est utilisé pour obtenir un objet écrivain. Chaque tuple de la liste des tuples
est ensuite écrit dans le fichier à l'aide de la méthode writerow ().
import csv
persons=[('Lata',22,45),('Anil',21,56),('John',20,60)]
csvfile=open('[Link]','w', newline='')
obj=[Link](csvfile)
for person in persons:
[Link](person)
[Link]()
Output
Cela créera le fichier «[Link]» dans le répertoire courant. Il affichera les données suivantes.
Lata,22,45
Anil,21,56
John,20,60
Au lieu d'itérer sur la liste pour écrire chaque ligne individuellement, nous pouvons utiliser la
méthode writerows ().
csvfile=open('[Link]','w', newline='')
persons=[('Lata',22,45),('Anil',21,56),('John',20,60)]
obj=[Link](csvfile)
[Link](persons)
[Link]()
lecteur()
Cette fonction renvoie un objet lecteur qui renvoie un itérateur de lignes dans le csv file. En
utilisant la boucle for régulière, toutes les lignes du fichier sont affichées dans l'exemple suivant -
Exemple
csvfile=open('[Link]','r', newline='')
obj=[Link](csvfile)
for row in obj:
print (row)
Production
['Lata', '22', '45']
['Anil', '21', '56']
['John', '20', '60']
L'objet lecteur est un itérateur. Par conséquent, il prend en charge la fonction next () qui peut
également être utilisée pour afficher toutes les lignes du fichier csv au lieu d'unfor loop.
csvfile=open('[Link]','r', newline='')
obj=[Link](csvfile)
while True:
try:
row=next(obj)
print (row)
except StopIteration:
break
Comme mentionné précédemment, le module csv utilise Excel comme dialecte par défaut. Le
module csv définit également une classe de dialectes. Dialect est un ensemble de normes
utilisées pour implémenter le protocole CSV. La liste des dialectes disponibles peut être obtenue
par la fonction list_dialects ().
>>> csv.list_dialects()
['excel', 'excel-tab', 'unix']
En plus des itérables, le module csv peut exporter un objet dictionnaire vers un fichier CSV et le
lire pour remplir l'objet dictionnaire Python. A cet effet, ce module définit les classes suivantes -
DictWriter ()
Cette fonction renvoie un objet DictWriter. Il est similaire à l'objet écrivain, mais les lignes sont
mappées à l'objet dictionnaire. La fonction a besoin d'un objet fichier avec autorisation d'écriture
et d'une liste de clés utilisées dans le dictionnaire comme paramètre fieldnames. Ceci est utilisé
pour écrire la première ligne du fichier comme en-tête.
en-tête d'écriture ()
Cette méthode écrit la liste des clés dans le dictionnaire sous la forme d'une ligne séparée par
des virgules en tant que première ligne du fichier.
Dans l'exemple suivant, une liste d'éléments de dictionnaire est définie. Chaque élément de la
liste est un dictionnaire. En utilisant la méthode writrows (), ils sont écrits dans un fichier séparés
par des virgules.
persons=[
{'name':'Lata', 'age':22, 'marks':45},
{'name':'Anil', 'age':21, 'marks':56},
{'name':'John', 'age':20, 'marks':60}
]
csvfile=open('[Link]','w', newline='')
fields=list(persons[0].keys())
obj=[Link](csvfile, fieldnames=fields)
[Link]()
[Link](persons)
[Link]()
name,age,marks
Lata,22,45
Anil,21,56
John,20,60
DictReader ()
Cette fonction renvoie un objet DictReader à partir du fichier CSV sous-jacent. Comme, dans le
cas d'un objet lecteur, celui-ci est également un itérateur, en utilisant quel contenu du fichier est
récupéré.
csvfile=open('[Link]','r', newline='')
obj=[Link](csvfile)
La classe fournit l'attribut fieldnames, renvoyant les clés de dictionnaire utilisées comme en-tête
du fichier.
print ([Link])
['name', 'age', 'marks']
Utilisez une boucle sur l'objet DictReader pour récupérer des objets de dictionnaire individuels.
Pour convertir l'objet OrderedDict en dictionnaire normal, nous devons d'abord importer
OrderedDict à partir du module de collections.
import json
data=['Rakesh',{'marks':(50,60,70)}]
s=[Link](data)
[Link](s)
La fonction dumps () peut prendre l'argument sort_keys facultatif. Par défaut, il est faux. Si la
valeur est True, les clés du dictionnaire apparaissent dans l'ordre trié dans la chaîne JSON.
La fonction dumps () a un autre paramètre facultatif appelé indent qui prend un nombre comme
valeur. Il décide de la longueur de chaque segment de la représentation formatée de la chaîne
json, similaire à la sortie d'impression.
Le module json a également une API orientée objet correspondant aux fonctions ci-dessus. Il
existe deux classes définies dans le module - JSONEncoder et JSONDecoder.
Classe JSONEncoder
L'objet de cette classe est l'encodeur pour les structures de données Python. Chaque type de
données Python est converti en type JSON correspondant, comme indiqué dans le tableau
suivant -
Python
Dict
liste, tuple
Str
Vrai
Faux
Aucun
La classe JSONEncoder est instanciée par le constructeur JSONEncoder (). Les méthodes
importantes suivantes sont définies dans la classe d'encodeur -
1 encode()
sérialise l'objet Python au format JSON
2 iterencode()
Encode l'objet et renvoie un itérateur donnant la forme codée de chaque élément de l'objet.
3 indent
Détermine le niveau de retrait de la chaîne codée
4 sort_keys
est soit vrai soit faux pour que les clés apparaissent dans un ordre trié ou non.
5 Check_circular
si True, vérifiez la référence circulaire dans l'objet de type conteneur
e=[Link]()
[Link](data)
Classe JSONDecoder
L'objet de cette classe aide à être décodé en chaîne json dans la structure de données Python.
La méthode principale de cette classe est decode (). L'exemple de code suivant récupère l'objet
de liste Python à partir de la chaîne codée à l'étape précédente.
d=[Link]()
[Link](s)
Le module json définit load() et dump() fonctions pour écrire des données JSON dans un fichier
comme un objet - qui peut être un fichier disque ou un flux d'octets et en lire les données.
déverser()
Cette fonction écrit les données d'objet JSONed Python dans un fichier. Le fichier doit être ouvert
en mode «w».
import json
data=['Rakesh', {'marks': (50, 60, 70)}]
fp=open('[Link]','w')
[Link](data,fp)
[Link]()
Ce code créera '[Link]' dans le répertoire courant. Il montre le contenu comme suit -
charge()
Cette fonction charge les données JSON à partir du fichier et renvoie un objet Python à partir de
celui-ci. Le fichier doit être ouvert avec l'autorisation de lecture (doit avoir le mode «r»).
Example
fp=open('[Link]','r')
ret=[Link](fp)
print (ret)
[Link]()
Output
le [Link] module dispose également d'une interface de ligne de commande qui valide les
données dans le fichier et imprime l'objet JSON d'une manière assez formatée.
1 [Link]
l'API ElementTree, un processeur XML simple et léger
2 [Link]
la définition de l'API DOM
3 [Link]
une implémentation DOM minimale
4 [Link]
Implémentation de l'interface SAX2
5 [Link]
la liaison de l'analyseur Expat
Les données du document XML sont organisées dans un format hiérarchique arborescent, en
commençant par la racine et les éléments. Chaque élément est un nœud unique dans
l'arborescence et possède un attribut entre les balises <> et </>. Un ou plusieurs sous-éléments
peuvent être affectés à chaque élément.
Voici un exemple typique de document XML -
Maintenant, nous pouvons ajouter un ou plusieurs éléments sous l'élément racine. Chaque objet
élément peut avoirSubElements. Chaque sous-élément a un attribut et une propriété de texte.
student=[Link]('student')
nm=[Link](student, 'name')
[Link]='name'
subject=[Link](student, 'subject')
[Link]='Ratna'
[Link]='Physics'
marks=[Link](student, 'marks')
[Link]='85'
[Link](student)
Ajoutez autant d'éléments que vous le souhaitez en utilisant la méthode ci-dessus. Enfin, l'objet
élément racine est écrit dans un fichier.
tree = [Link](root)
file = open('[Link]','wb')
[Link](file)
[Link]()
Maintenant, nous voyons comment analyser le fichier XML. Pour cela, construisez une
arborescence de documents en donnant son nom comme paramètre de fichier dans le
constructeur ElementTree.
tree = [Link](file='[Link]')
L'objet arbre a getroot() méthode pour obtenir l'élément racine et getchildren () retourne une liste
d'éléments en dessous.
root = [Link]()
children = [Link]()
Chaque dictionnaire est ensuite ajouté à une liste renvoyant la liste d'origine des objets du
dictionnaire.
SAXest une interface standard pour l'analyse XML basée sur les événements. L'analyse XML
avec SAX nécessite ContentHandler en sous-classant [Link]. Vous enregistrez
des rappels pour les événements intéressants, puis laissez l'analyseur parcourir le document.
SAX est utile lorsque vos documents sont volumineux ou que vous avez des limitations de
mémoire car il analyse le fichier pendant qu'il le lit à partir du disque. Par conséquent, le fichier
entier n'est jamais stocké dans la mémoire.
proplist = {
"name" : "Ganesh",
"designation":"manager",
"dept":"accts",
"salary" : {"basic":12000, "da":4000, "hra":800}
}
Afin d'écrire ces propriétés dans un fichier disque, nous appelons la fonction dump () dans le
module plist.
import plistlib
fileName=open('[Link]','wb')
[Link](proplist, fileName)
[Link]()
Inversement, pour relire les valeurs de propriété, utilisez la fonction load () comme suit -
import sqlite3
db=[Link]('[Link]')
Ici, db est l'objet de connexion représentant [Link]. Notez que cette base de données sera créée
si elle n'existe pas déjà. L'objet de connexion db a les méthodes suivantes -
1 cursor():
Renvoie un objet Cursor qui utilise cette connexion.
2 commit():
Valide explicitement toutes les transactions en attente dans la base de données.
3 rollback():
Cette méthode facultative entraîne la restauration d'une transaction au point de départ.
4 close():
Ferme définitivement la connexion à la base de données.
Un curseur agit comme un handle pour une requête SQL donnée permettant la récupération
d'une ou plusieurs lignes du résultat. L'objet curseur est obtenu à partir de la connexion pour
exécuter des requêtes SQL à l'aide de l'instruction suivante -
cur=[Link]()
1 execute()
Exécute la requête SQL dans un paramètre de chaîne.
2 executemany()
Exécute la requête SQL à l'aide d'un ensemble de paramètres dans la liste des tuples.
3 fetchone()
Récupère la ligne suivante du jeu de résultats de la requête.
4 fetchall()
Récupère toutes les lignes restantes de l'ensemble de résultats de la requête.
5 callproc()
Appelle une procédure stockée.
6 close()
Ferme l'objet curseur.
import sqlite3
db=[Link]('[Link]')
cur =[Link]()
[Link]('''CREATE TABLE student (
StudentID INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT (20) NOT NULL,
age INTEGER,
marks REAL);''')
print ('table created successfully')
[Link]()
L'intégrité des données souhaitée dans une base de données est obtenue
par commit() et rollback()méthodes de l'objet de connexion. La chaîne de requête SQL peut
avoir une requête SQL incorrecte qui peut déclencher une exception, qui doit être correctement
gérée. Pour cela, l'instruction execute () est placée dans le bloc try. Si elle réussit, le résultat est
sauvegardé en permanence à l'aide de la méthode commit (). Si la requête échoue, la transaction
est annulée à l'aide de la méthode rollback ().
Le code suivant exécute la requête INSERT sur la table student dans [Link].
import sqlite3
db=[Link]('[Link]')
qry="insert into student (name, age, marks) values('Abbas', 20, 80);"
try:
cur=[Link]()
[Link](qry)
[Link]()
print ("record added successfully")
except:
print ("error in query")
[Link]()
[Link]()
Si vous souhaitez que les données de la clause values de la requête INSERT soient fournies
dynamiquement par l'entrée utilisateur, utilisez la substitution de paramètres comme
recommandé dans Python DB-API. Le ? character est utilisé comme espace réservé dans la
chaîne de requête et fournit les valeurs sous la forme d'un tuple dans la méthode execute ().
L'exemple suivant insère un enregistrement à l'aide de la méthode de substitution de paramètre.
Le nom, l'âge et les notes sont pris en compte.
import sqlite3
db=[Link]('[Link]')
nm=input('enter name')
a=int(input('enter age'))
m=int(input('enter marks'))
qry="insert into student (name, age, marks) values(?,?,?);"
try:
cur=[Link]()
[Link](qry, (nm,a,m))
[Link]()
print ("one record added successfully")
except:
print("error in operation")
[Link]()
[Link]()
Le module sqlite3 définit le executemany()méthode qui est capable d'ajouter plusieurs
enregistrements à la fois. Les données à ajouter doivent être données dans une liste de tuples,
chaque tuple contenant un enregistrement. L'objet list est le paramètre de la méthode
executemany (), avec la chaîne de requête. Cependant, la méthode executemany () n'est pas
prise en charge par certains des autres modules.
le UPDATELa requête contient généralement une expression logique spécifiée par la clause
WHERE. La chaîne de requête de la méthode execute () doit contenir une syntaxe de requête
UPDATE. Pour mettre à jour la valeur de 'age' à 23 pour name = 'Anil', définissez la chaîne
comme ci-dessous:
Pour rendre le processus de mise à jour plus dynamique, nous utilisons la méthode de
substitution de paramètres décrite ci-dessus.
import sqlite3
db=[Link]('[Link]')
nm=input(‘enter name’)
a=int(input(‘enter age’))
qry="update student set age=? where name=?;"
try:
cur=[Link]()
[Link](qry, (a, nm))
[Link]()
print("record updated successfully")
except:
print("error in query")
[Link]()
[Link]()
De même, l'opération DELETE est effectuée en appelant la méthode execute () avec une chaîne
ayant la syntaxe de requête DELETE de SQL. Incidemment,DELETE La requête contient
également généralement un WHERE clause.
import sqlite3
db=[Link]('[Link]')
nm=input(‘enter name’)
qry="DELETE from student where name=?;"
try:
cur=[Link]()
[Link](qry, (nm,))
[Link]()
print("record deleted successfully")
except:
print("error in operation")
[Link]()
[Link]()
L'une des opérations importantes sur une table de base de données est la récupération des
enregistrements à partir de celle-ci. SQL fournitSELECTrequête pour le but. Lorsqu'une chaîne
contenant la syntaxe de requête SELECT est donnée à la méthode execute (), un objet
d'ensemble de résultats est renvoyé. Il existe deux méthodes importantes avec un objet curseur
à l'aide desquelles un ou plusieurs enregistrements du jeu de résultats peuvent être récupérés.
fetchone ()
Récupère le prochain enregistrement disponible de l'ensemble de résultats. Il s'agit d'un tuple
composé des valeurs de chaque colonne de l'enregistrement extrait.
fetchall ()
Récupère tous les enregistrements restants sous la forme d'une liste de tuples. Chaque tuple
correspond à un enregistrement et contient les valeurs de chaque colonne de la table.
L'exemple suivant répertorie tous les enregistrements de la table Student
import sqlite3
db=[Link]('[Link]')
37
sql="SELECT * from student;"
cur=[Link]()
[Link](sql)
while True:
record=[Link]()
if record==None:
break
print (record)
[Link]()
Si vous prévoyez d'utiliser une base de données MySQL au lieu d'une base de données SQLite,
vous devez installer PyMySQLmodule comme décrit ci-dessus. Toutes les étapes du processus
de connectivité de la base de données étant identiques, puisque la base de données MySQL est
installée sur un serveur, la fonction connect () a besoin de l'URL et des informations de
connexion.
import pymysql
con=[Link]('localhost', 'root', '***')
La seule chose qui peut différer avec SQLite est les types de données spécifiques à MySQL. De
même, toute base de données compatible ODBC peut être utilisée avec Python en installant le
module pyodbc.
Pour vérifier si SQLalchemy est correctement installé et sa version, entrez la suite à l'invite
Python -
Les interactions avec la base de données sont effectuées via l'objet Engine obtenu en tant que
valeur de retour de create_engine() fonction.
engine =create_engine('sqlite:///[Link]')
SQLite permet la création d'une base de données en mémoire. Le moteur SQLAlchemy pour la
base de données en mémoire est créé comme suit -
Si vous avez l'intention d'utiliser la base de données MySQL à la place, utilisez son module DB-
API - pymysql et le pilote de dialecte correspondant.
engine = create_engine('mysql+pymydsql://root@localhost/mydb')
Le create_engine a un argument d'écho facultatif. S'il est défini sur true, les requêtes SQL
générées par le moteur seront répercutées sur le terminal.
SQLAlchemy contient declarative baseclasse. Il agit comme un catalogue de classes de
modèles et de tables mappées.
L'étape suivante consiste à définir une classe de modèle. Il doit être dérivé de base - object de la
classe declarative_base comme ci - dessus.
Ensemble __tablename__ propriété au nom de la table que vous souhaitez créer dans la base
de données. D'autres attributs correspondent aux champs. Chacun est un objet Column dans
SQLAlchemy et son type de données provient de l'une des listes ci-dessous -
BigInteger
Boolean
Date
DateTime
Float
Integer
Numeric
SmallInteger
String
Text
Time
Le code suivant est la classe de modèle nommée Student qui est mappée à la table Students.
#[Link]
from [Link] import declarative_base
from sqlalchemy import Column, Integer, String, Numeric
base=declarative_base()
class Student(base):
__tablename__='Students'
StudentID=Column(Integer, primary_key=True)
name=Column(String)
age=Column(Integer)
marks=Column(Numeric)
Pour créer une table Elèves ayant une structure correspondante, exécutez la méthode create_all
() définie pour la classe de base.
[Link].create_all(engine)
Nous devons maintenant déclarer un objet de notre classe Student. Toutes les transactions de
base de données telles que l'ajout, la suppression ou la récupération de données de la base de
données, etc., sont gérées par un objet Session.
from [Link] import sessionmaker
Session = sessionmaker(bind=engine)
sessionobj = Session()
Les données stockées dans l'objet Student sont physiquement ajoutées dans la table sous-
jacente par la méthode add () de la session.
Voici le code complet pour ajouter un enregistrement dans la table des étudiants. Lors de son
exécution, le journal des instructions SQL correspondant s'affiche sur la console.
Sortie de la console
CREATE TABLE "Students" (
"StudentID" INTEGER NOT NULL,
name VARCHAR,
age INTEGER,
marks NUMERIC,
PRIMARY KEY ("StudentID")
)
INFO [Link] ()
INFO [Link] COMMIT
INFO [Link] BEGIN (implicit)
INFO [Link] INSERT INTO "Students" (name, age,
marks) VALUES (?, ?, ?)
INFO [Link] ('Juhi', 25, 200.0)
INFO [Link] COMMIT
le session object fournit également la méthode add_all () pour insérer plus d'un objet dans une
seule transaction.
sessionobj.add_all([s2,s3,s4,s5])
[Link]()
Maintenant que les enregistrements sont ajoutés dans la table, nous aimerions en extraire
comme le fait la requête SELECT. L'objet session a la méthode query () pour effectuer la tâche.
L'objet de requête est retourné par la méthode query () sur notre modèle Student.
qry=[Link](Student)
Utilisez la méthode get () de cet objet Query récupère l'objet correspondant à la clé primaire
donnée.
S1=[Link](1)
Pendant que cette instruction est exécutée, son instruction SQL correspondante renvoyée sur la
console sera la suivante -
BEGIN (implicit)
SELECT "Students"."StudentID" AS "Students_StudentID", "Students".name AS
"Students_name", "Students".age AS "Students_age",
"Students".marks AS "Students_marks"
FROM "Students"
WHERE "Products"."Students" = ?
[Link] (1,)
La méthode [Link] () renvoie une liste de tous les objets qui peuvent être parcourus à l'aide
d'une boucle.
La mise à jour d'un enregistrement dans la table mappée est très simple. Tout ce que vous avez
à faire est de récupérer un enregistrement à l'aide de la méthode get (), d'attribuer une nouvelle
valeur à l'attribut souhaité, puis de valider les modifications à l'aide de l'objet session. Ci-
dessous, nous changeons les notes de l'étudiant Juhi à 100.
S1=[Link](1)
[Link]=100
[Link]()
La suppression d'un enregistrement est tout aussi simple, en supprimant l'objet souhaité de la
session.
S1=[Link](1)
[Link](S1)
[Link]()
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.
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.
Utilisez cet objet client pour établir la connexion avec le serveur MongoDB.
db=[Link]
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=[Link]
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)
[Link]()
students=db['students']
docs=[Link]()
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 -
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=[Link]({'age':{'$gt':21}})
for doc in docs:
print ([Link]('Name'), [Link]('age'), [Link]('marks'))
L'interaction avec la base de données Cassandra se fait via l'objet Cluster. Le module
[Link] définit la classe de cluster. Nous devons d'abord déclarer l'objet Cluster.
Toutes les transactions telles que l'insertion / la mise à jour, etc., sont effectuées en démarrant
une session avec un espace de clés.
session=[Link]()
Ici, SimpleStrategy est une valeur pour replication strategy et replication factorest défini sur
3. Comme mentionné précédemment, un espace de clés contient une ou plusieurs tables.
Chaque table est caractérisée par son type de données. Les types de données Python sont
automatiquement analysés avec les types de données CQL correspondants conformément au
tableau suivant -
Aucun NUL
Booléen Booléen
décimal.Décimal Décimal
Date Date
Datetime Horodatage
Temps Temps
Pour créer une table, utilisez l'objet session pour exécuter une requête CQL pour créer une table.
from [Link] import Cluster
clstr=Cluster()
session=[Link]('mykeyspace')
qry= '''
create table students (
studentID int,
name text,
age int,
marks int,
primary key(studentID)
);'''
[Link](qry)
L'espace de clés ainsi créé peut être utilisé pour insérer des lignes. La version CQL de la requête
INSERT est similaire à l'instruction SQL Insert. Le code suivant insère une ligne dans la table des
étudiants.
Comme vous vous en doutez, l'instruction SELECT est également utilisée avec Cassandra. Dans
le cas de la méthode execute () contenant la chaîne de requête SELECT, elle retourne un objet
de jeu de résultats qui peut être parcouru à l'aide d'une boucle.
Notez que l'utilisation de ALLOW FILTERING. La partie ALLOW FILTERING de cette instruction
permet d'autoriser explicitement (certaines) requêtes qui nécessitent un filtrage.
L'API du pilote Cassandra définit les classes suivantes de type Statement dans son module
[Link].
SimpleStatement
Une requête CQL simple et non préparée contenue dans une chaîne de requête. Tous les
exemples ci-dessus sont des exemples de SimpleStatement.
BatchStatement
Plusieurs requêtes (telles que INSERT, UPDATE et DELETE) sont placées dans un lot et
exécutées en même temps. Chaque ligne est d'abord convertie en SimpleStatement, puis
ajoutée dans un lot.
Mettons les lignes à ajouter dans la table Students sous la forme d'une liste de tuples comme suit
-
Pour ajouter les lignes ci-dessus à l'aide de BathStatement, exécutez le script suivant -
Affirmation préparée
L'instruction préparée est comme une requête paramétrée dans DB-API. Sa chaîne de requête
est enregistrée par Cassandra pour une utilisation ultérieure. La méthode [Link] ()
retourne une instance PreparedStatement.
Pour notre table des étudiants, une requête PreparedStatement for INSERT est la suivante -
Par la suite, il suffit d'envoyer les valeurs des paramètres à lier. Par exemple -
qry=[Link]([1,'Ram', 23,175])
Enfin, exécutez l'instruction liée ci-dessus.
[Link](qry)
Cela réduit le trafic réseau et l'utilisation du processeur car Cassandra n'a pas à réanalyser la
requête à chaque fois.
FileStorage
C'est la valeur par défaut. Tout est stocké dans un seul fichier Big [Link], qui est
essentiellement un journal de transactions.
RépertoireStorage
Cela stocke un fichier par révision d'objet. Dans ce cas, il ne nécessite pas la reconstruction de
[Link] lors d'un arrêt impur.
RelStorage
Cela stocke les cornichons dans une base de données relationnelle. PostgreSQL, MySQL et
Oracle sont pris en charge.
Pour créer une base de données ZODB, nous avons besoin d'un stockage, d'une base de
données et enfin d'une connexion.
La première étape consiste à avoir un objet de stockage.
La classe DB utilise cet objet de stockage pour obtenir un objet de base de données.
db = [Link](storage)
Db=[Link](None)
conn=[Link]()
L'objet de connexion vous donne alors accès à la 'racine' de la base de données avec la
méthode 'root ()'. L'objet «racine» est le dictionnaire qui contient tous vos objets persistants.
root = [Link]()
Par exemple, nous ajoutons une liste d'étudiants à l'objet racine comme suit -
Cette modification n'est pas enregistrée de manière permanente dans la base de données tant
que nous ne validons pas la transaction.
import transaction
[Link]()
Pour stocker l'objet d'une classe définie par l'utilisateur, la classe doit être héritée de la classe
parente [Link].
Avantages du sous-classement
Sous-classer la classe persistante a ses avantages comme suit -
La base de données suivra automatiquement les modifications apportées aux objets en
définissant des attributs.
Les données seront enregistrées dans son propre enregistrement de base de données.
Vous pouvez enregistrer des données qui ne sont pas sous-classe Persistent, mais elles
seront stockées dans l'enregistrement de base de données de tout objet persistant qui y
fait référence. Les objets non persistants appartiennent à leur objet persistant et si
plusieurs objets persistants font référence au même sous-objet non persistant, ils
obtiendront leurs propres copies.
Laissez utiliser définir une classe d'étudiant sous-classant la classe persistante comme sous -
import persistent
class student([Link]):
def __init__(self, name):
[Link] = name
def __repr__(self):
return str([Link])
Pour ajouter un objet de cette classe, commençons par configurer la connexion comme décrit ci-
dessus.
s1=student("Akash")
root['s1']=s1
import transaction
[Link]()
[Link]()
La liste de tous les objets ajoutés à la racine peut être récupérée en tant qu'objet de vue à l'aide
de la méthode items () car l'objet racine est similaire au dictionnaire intégré.
print ([Link]())
ItemsView({'s1': Akash})
print (root['s1'].name)
Akash
L'objet peut être facilement mis à jour. Étant donné que l'API ZODB est un package Python pur,
elle ne nécessite aucun langage de type SQL externe pour être utilisé.
root['s1'].name='Abhishek'
import transaction
[Link]()
La base de données sera mise à jour instantanément. Notez que la classe de transaction définit
également la fonction abort () qui est similaire au contrôle de transaction rollback () dans SQL.
Comme nous le savons, une cellule dans la feuille de calcul est nommée au format
ColumnNameRownumber. En conséquence, la cellule supérieure gauche est A1. Nous
attribuons une chaîne à cette cellule comme -
Sinon, utilisez la feuille de calcul cell()méthode qui utilise le numéro de ligne et de colonne pour
identifier une cellule. Appelez la propriété value à l'objet cellule pour attribuer une valeur.
cell1=[Link](row=1, column=1)
[Link]='Student List'
Après avoir rempli la feuille de calcul avec des données, le classeur est enregistré en appelant la
méthode save () de l'objet classeur.
[Link]('[Link]')
Le classeur [Link] est enregistré dans le répertoire de travail actuel. S'il est ouvert à l'aide
de l'application Excel, il apparaît comme ci-dessous -
Le module openpyxl propose load_workbook() fonction qui aide à lire les données dans le
document de classeur.
Vous pouvez désormais accéder à la valeur de n'importe quelle cellule spécifiée par le numéro
de ligne et de colonne.
cell1=[Link](row=1, column=1)
print ([Link])
Student List
Exemple
Le code suivant remplit une liste avec des données de feuille de travail.
Production
[('RollNo', 'Name', 'age', 'marks'), (1, 'Juhi', 20, 100), (2, 'dilip', 20,
110), (3, 'jeevan', 24, 145)]
Une caractéristique très importante de l'application Excel est la formule. Pour attribuer une
formule à une cellule, affectez-la à une chaîne contenant la syntaxe de formule d'Excel. Attribuez
la fonction MOYENNE à la cellule c6 ayant l'âge.
sheet1['C6']= 'AVERAGE(C3:C5)'