Vous êtes sur la page 1sur 14

Manipulation de SQLite à partir de

Python
Plan
1. Présentation
2. Utilisation du module python SQLITE
3. Connexion à la base de données SQLITE
4. Créer et supprimer des tables
5. Insertion des données dans une base de
données
6. Récupérer des données (SELECT) avec SQLITE
7. Mise à jour et suppression des données
8. Correspondance entre les types de données
SQLITE et Python.
1.Présentation

• Python inclus un module appelé "sqlite3" pour


permettre l'utilisation des base de données
sqlite.
2. Utilisation du module python SQLITE
• Pour utiliser le module SQLite3, nous devons
ajouter un import dans le code python de notre
programme:

import sqlite3
3. Connexion à la base de données
SQLITE
• Nous utilisons la fonction sqlite3.connect pour se
connecter à la base de données.
• notons que si la base n'existe pas encore, un fichier
sera crée dans le dossier du programme. Et si celui-
ci existe déjà il sera réutilisé.
# Création ou ouverture du fichier appelé mydb par
SQLite3
db = sqlite3.connect('data/mydb.sqlite')
• Quand nous avons fini avec une base de données on
doit fermer la connexion comme suit :
db.close()
4. Créer et supprimer des tables
• Dans le but de manipuler les données de la base,
nous devons faire appel à un objet curseur.
Nous lui passons des requêtes SQL qu'il
exécutera.
• Finalement, il est nécessaire de valider
l'opération (commit) pour que les
modifications soient effectuées .
4. Créer et supprimer des tables
Exemple:
# Avoir un objet curseur
cursor = db.cursor()
cursor.execute('''
CREATE TABLE users(id INTEGER PRIMARY KEY, nom
TEXT,
tel TEXT, email TEXT unique, passe TEXT); ''')
db.commit()
pour détruire la table:
# Avoir un objet curseur
cursor = db.cursor()
cursor.execute('''DROP TABLE users;''')
db.commit()
5. Insertion des données dans une base
de données
• Pour insérer des données, nous le ferons à l'aide
d'un objet curseur qui se chargera d'exécuter la
requête SQL insert into.

• Pour utiliser les valeurs des variables du


programme python, il est recommandé de
réserver la place des valeurs dans la requête par
l'utilisation du symbole "?".
5. Insertion des données en base de
données
Exemple:
Dans cet exemple on va ajouter un utilisateur dans la base, ses
informations sont dans des variables du programme python.

cursor = db.cursor()
name1 = 'Andres'
phone1 = '3366858'
email1 = 'user@example.com'
password1 = '12345'
# Insertion du premier utilisateur
cursor.execute('''INSERT INTO users(nom, tel, email, passe)
VALUES(?,?,?,?);''', (name1,phone1, email1, password1))
db.commit()
5. Insertion des données en base de
données
• Les valeurs des variables de python sont passées dans des tuples. Un
autre moyen de le faire est d'utiliser un dictionnaire utilisant la
réservation de place avec ":keyname" :

cursor.execute('''INSERT INTO users(nom, tel, email, passe)


VALUES(:name,:phone, :email, :password)''', {'name':name1,
'phone':phone1, 'email':email1, 'password':password1})

• Si nous voulons insérer plusieurs utilisateur nous utiliserons


executemany avec une liste des tuples:

users = [(name1,phone1, email1, password1), (name2,phone2, email2,


password2), (name3,phone3, email3, password3)]

cursor.executemany(''' INSERT INTO users(nom, tel, email, passe)


VALUES(?,?,?,?)''', users)
db.commit()
6. Recupérer des données (SELECT)
avec SQLITE
Pour récupérer des données, exécuter la requête avec un objet
curseur puis utiliser fetchone() pour récupérer un seul
enregistrement ou fetchall() pour récupérer l'ensemble des
enregistrements.

cursor.execute('''SELECT nom, email, tel FROM users;''')

user1 = cursor.fetchone() #récupère le premier enregistrement


print(user1[0]) #Affiche la première colonne récupéré (nom de
l'utilisateur)

all_rows = cursor.fetchall() # all_rows est une liste.


for row in all_rows:
# row[0] returne la première colonne de la requête (nom),
row[1] retourne l'email.
print('{0} : {1}, {2}'.format(row[0], row[1], row[2]))
6. Recupérer des données (SELECT)
avec SQLITE
L'objet curseur fonctionne comme un iterateur, appellant fetchall()
automatiquement:

cursor.execute('''SELECT name, email, phone FROM users;''')


for row in cursor:
# row[0] returne la première colonne de la requête (nom), row[1]
retourne l'email colonne.
print('{0} : {1}, {2}'.format(row[0], row[1], row[2]))

Pour utiliser les conditions dans la requête SQL. nous utilisons encore
le caractère de réservation "?":
user_id = 3
cursor.execute('''SELECT nom, email, tel FROM users WHERE
id=?;''', (user_id,))
user = cursor.fetchone()
7.Mise à jour et suppression des
données
La procédure pour mettre à jour ou supprimer des
données est la même que celle utilisée pour l'insertion:
# Mettre à jour l'utilisateur dont l'id est 1
newphone = '3113093164'
userid = 1
cursor.execute('''UPDATE users SET tel = ? WHERE id = ?
;''', (newphone, userid))

# suppression de l’utilisateur d'id 2


delete_userid = 2
cursor.execute('''DELETE FROM users WHERE id = ? ;''',
(delete_userid,))
db.commit()
8. Correspondance entre les types de
données SQLITE et Python.
La correspondance suivante montre la relation
entre les types de données de SQLite et
ceux de Python :
• le type None de python est converti en NULL
• le type int de python est converti en INTEGER
• le type float de python est converti en REAL
• le type str de python est converti en TEXT

Vous aimerez peut-être aussi