Cours Python bases de données SQLite en PDF (Intermédiaire)
Python — Bases de données (SQLite) : Ce qu'il faut savoir. Introduction pratique à l'utilisation de SQLite depuis Python via le module standard sqlite3. SQLite est un système de gestion de base de données relationnelle léger et embarqué qui stocke la base sous forme de fichier (ou en RAM). Un SGBD (Système de Gestion de Base de Données) est un logiciel permettant de stocker, organiser et interroger des données ; SQLite est un SGBD relationnel sans serveur, adapté aux applications embarquées et aux scripts.
Prérequis technique : import minimal requis : import sqlite3. Rédigé par Benoît Petitpas. Le document fournit des exemples exécutables, couvre connexion, création de tables, opérations CRUD et bonnes pratiques de paramétrisation, ainsi que des précautions à prendre en production et en test.
🎯 Ce que vous allez apprendre
- Connexion et gestion de connexion — ouvrir une base locale ou en mémoire avec
sqlite3.connect(), implications pour la persistance et le cycle de vie d'une connexion, gestion correcte decommit()etclose(). - Création de schéma et types — définition de tables avec
PRIMARY KEY, choix de types de champs et limites typiques de SQLite (mappage des types, encodage UTF-8), prévention des erreurs de type. - Insertion et performances — insertion via
INSERT, utilisation deexecutemany()pour les lots et récupération d'identifiants aveccursor.lastrowid. - Requêtes et parcours des résultats — usage de
SELECT,fetchone(),fetchall()et traitement des tuples retournés en structures Python. - Paramétrisation et sécurité — prévention des injections SQL par l'utilisation de placeholders positionnels
?ou nommés:nameet le passage de tuples/dictionnaires, évitant la concaténation de chaînes. - Modification et suppression d'enregistrements — construction de requêtes
UPDATEetDELETEavec clauseWHERE, tests sur bases en mémoire pour essais non destructifs.
📑 Sommaire du document
- Introduction
- Base de données
- Utilisons le module sqlite de python
- Se connecter à la base de données
- Créer et supprimer des tables
- Insérer des données dans la table
- Accéder aux données
- Mettre à jour et supprimer des enregistrements
💡 Pourquoi choisir ce cours ?
Approche pragmatique : extraits de code pas à pas, démonstrations en REPL et conseils sur les pièges courants (encodage, datatype mismatch, commit). S'appuie sur la bibliothèque standard de Python (sqlite3), facilitant le déploiement sans dépendances externes et permettant de tester rapidement en mémoire. Contient des exemples concrets d'usage (INSERT paramétré, executemany(), récupération de lastrowid) et des recommandations pour sécuriser les requêtes.
👤 À qui s'adresse ce cours ?
- Public cible : développeurs Python et étudiants en informatique qui intègrent une base légère pour prototypage, scripts d'administration ou applications embarquées, ou préparent des tests fonctionnels avec une base en RAM.
- Prérequis : maîtrise des bases du langage Python (variables, tuples/listes, fonctions) et notions élémentaires de SQL (
SELECT,INSERT,WHERE). Savoir exécuter un script Python ou travailler en REPL est nécessaire.
Installation et configuration de l'environnement
Le module sqlite3 est inclus nativement dans la bibliothèque standard de Python ; aucune installation serveur n'est requise pour l'utiliser. Pour démarrer : importer le module avec import sqlite3, puis ouvrir une connexion via sqlite3.connect('ma_base.db') ou sqlite3.connect(':memory:') pour une base éphémère. La configuration initiale se limite souvent aux paramètres de timeout et à l'activation de la clé étrangère via PRAGMA foreign_keys = ON selon les besoins.
SQLite : Un SGBD léger pour vos applications Python
SQLite est adapté aux scripts, applications desktop, prototypes et tests automatisés. En pratique pédagogique, le PDF propose la création d'une petite application de gestion de données (ex. gestion d'élèves) comme fil conducteur : définition du schéma, insertion d'exemples, requêtes filtrées et interface CLI simple pour illustrer le cycle complet de développement. Ce fil conducteur facilite la transposition vers des projets réels ou vers des SGBD serveur si besoin d'évolution.
Comparatif : SQLite vs MySQL/PostgreSQL
- Architecture : SQLite est embarqué et sans serveur ; MySQL/PostgreSQL sont des SGBD serveurs nécessitant une instance dédiée.
- Concurrence : SQLite gère mieux les lectures concurrentes que les écritures lourdes ; les SGBD serveurs offrent des verrous et stratégies de concurrence plus robustes pour les charges élevées.
- Scalabilité : SQLite convient pour des bases de taille modérée et un usage mono-processus ou faible concurrence ; MySQL/PostgreSQL conviennent aux architectures distribuées et aux gros volumes.
- Fonctionnalités avancées : PostgreSQL offre un large éventail de types, extensions et garanties d'intégrité ; MySQL propose des moteurs variés ; SQLite privilégie la simplicité et la portabilité.
- Cas d'usage : prototypage, applications embarquées et tests → SQLite ; applications web à forte charge ou exigences ACID complexes → MySQL/PostgreSQL.
Pourquoi utiliser SQLite pour le prototypage ?
SQLite élimine la configuration d'un serveur, accélère les itérations et réduit la complexité des scripts d'installation, ce qui en fait un excellent choix pour prototypage et tests automatisés. Les bases en mémoire permettent d'exécuter des suites de tests isolées sans side effects. Pour des besoins de concurrence élevée, réplication ou garanties avancées d'intégrité, migrer vers PostgreSQL ou MySQL reste recommandé en production.
Manipulation des données avec SQL et Python
La manipulation des données se fait par l'exécution de requêtes SQL depuis des scripts Python ; le document illustre des cas simples et en lot (transactions, curseurs, executemany()) et aborde les conséquences dans l'algèbre relationnelle lors des jointures ou projections. Termes clés couverts : SGBD relationnel, algèbre relationnelle, scripts Python et gestion de données.
Manipulation : utilisation pratique
Exemples d'opérations : insertion d'ensembles de tuples, mise à jour conditionnelle avec UPDATE, suppression contrôlée avec DELETE, lecture optimisée via des index. Astuces pour transformer les résultats en structures Python idiomatiques et pour gérer les transactions efficacement (utilisation de context managers pour garantir commit/rollback).
❓ Foire Aux Questions (FAQ)
Quelle différence pratique entre commit() et close() dans sqlite3 ? commit() termine la transaction courante et force l'écriture sur le fichier de base, garantissant la persistance des modifications ; close() libère la connexion. Pour une base en mémoire (':memory:'), la fermeture entraîne la perte des données si elles n'ont pas été persistées ailleurs.