CPGE Oujda SQLite, SQLet Python Spé
SQLite
*SQLite créée par D. Richard Hipp.
*SQLite est la seule base de données relationnelle qui est installée avec Python.
*SQLite utilise le langage SQL
*Le module à utiliser avec Phyton est sqlite3.
*Une base de données SQLite est représentée à l'aide d'unfichier. Dans ce fichier il y aura plusieurs tables avec unegestion proche de celle des fichiers. Une écriture dans une destables verrouillera le fichier. Par contre la lecture par plusieursutilisateurs est permise sur une base de données SQLite
*C'est une base de données embarquée, doncpas besoin de serveur pour héberger le SGBD
Une base de données SQLite peut gérer des tables de plusieurscentaines de milliers de lignes sans problème.
*La taille d'une base de données SQLite ne peut excéder 2To
*Elle est incluse dans toutes les distributions de Python depuis la version 2.5.
*Utlisateurs majeurs
Adobe : Photoshop, Acrobat
Apple : différentes fonctions de Mac Os utilisent SQLite, le Mail
Safari Web Browser, Mozila, Google
Skype
Airbus (A350 XWB)
Dropbox
SQLite : les opérations
· connect() : Pour se connecter à une base de données
· cursor() :Des curseurs sont utilisés pour les interactions avec la base:
émission de requêtes SQL
· la méthode execute() qui permet l’évaluation d’une requête SQL
· La méthode executemany() permet l'exécution de valeursretardées
· fetchone() et fetchall() permettent de récupérer respectivementune valeur ou toutes les valeurs.
· close() :ferme une connexion.
· commit() :valide une transaction avec la base.
· rollback() :annule une transaction avec la base.
Cette méthode annule toutes les modifications apportées à la base dedonnées depuis le dernier appel à commit ().
Caractéristiques :
· Garantit l'intégrité des données,
· Supporte les transactions.
· Supporte la quasi-totalité du SQL-92
· Les bases SQLite sont portables (Windows, Linux, Mac, PDA, ...)
· Des wrappers pour presque tous les langages.
· Pas de serveur à installer
# connection
import sqlite3
def creation():
conn= sqlite3.connect('peintreSQLite')
curseur=conn.cursor()
#creation de la table
requete='CREATE TABLE IF NOT EXISTS patronyme (nom char(20), prenom char(30),naissance int(4))'
curseur.execute(requete)
#ajout d'elements
curseur.execute('INSERT INTO patronyme VALUES (?,?,?)', ('Magritte','Rene',1819))
curseur.execute("INSERT INTO patronyme VALUES ('Courbet','Gustave',1819)")
requete='INSERT INTO patronyme VALUES (?,?,?)'
curseur.execute(requete, ['De Vinci','Leonard',1452])
curseur.executemany('INSERT INTO patronyme VALUES (?,?,?)',\
[ ('Danckerts','Hendrick ',1625), ('Brioullov','Karl',1799), ('Delacroix','Gustave ',1798) ])
peintres=[['Turner','Joseph Mallord William',1775],['Vinci','Leonard',1452],['Bermejo','Barolome',1440],['van Rijn','Rembrandt',1606]]
for peintre in peintres:
curseur.execute('INSERT INTO patronyme VALUES (?,?,?)', peintre)
conn.commit() # pour ecrire non pas en memoire mais sur disque
# Affichage du contenu de la table
def liste():
conn= sqlite3.connect('peintreSQLite')
curseur=conn.cursor()
#afficher le contenu de la table
print("Le contenu de toute la table")
requete="SELECT * FROM patronyme"
curseur.execute(requete)
for ligne in curseur.fetchall():
print(ligne)
#recherche
def liste1(x):
conn= sqlite3.connect('peintreSQLite1')
curseur=conn.cursor()
#afficher naissance
req="select * from patronyme where naissance>%i"%x
curseur.execute(req)
for ligne in curseur.fetchall():
print(ligne)
#pp
choix=1
while choix!=0:
choix=int(input("1:creation/ 2:liste totale/ 3;recherche/ 0:quitter "))
if choix==1:
creation()
elif choix==2:
liste()
elif choix==3:
print("donner la da te de naissance a chercher")
x=int(input())
liste1(x)
else:
print("au revoir