Travailler avec SQLite en Python : guide complet pour débutants et développeurs expérimentés
La gestion des bases de données est une compétence essentielle dans le développement d'applications. Si vous avez besoin d'une solution légère et intégrée, sans installer de serveur dédié, SQLite est le choix idéal.
Avec Python, grâce au module standard sqlite3, vous pouvez créer, modifier et gérer des bases de données directement depuis votre code. Dans cet article, vous apprendrez à vous connecter à SQLite, à effectuer des opérations d'insertion (INSERT), de mise à jour (UPDATE) et bien plus encore.
Qu'est-ce que SQLite et pourquoi le choisir ?
SQLite est une base de données relationnelle embarquée qui stocke toutes les informations dans un seul fichier. Elle ne nécessite aucun serveur et est parfaite pour le prototypage, les petits projets et les applications mobiles.
SQLite est largement utilisé dans divers domaines du développement logiciel. De nombreuses applications populaires, y compris les navigateurs, les messageries et les applications mobiles, utilisent SQLite pour le stockage local des données.
Avantages de SQLite
- Aucune installation de serveur requise
- Haute vitesse d'exécution
- Simplicité d'utilisation
- Excellente intégration avec Python via le module sqlite3
- Multiplateforme et portable
- Prise en charge des transactions ACID
- Consommation minimale de ressources
Limites de SQLite
- Ne prend pas en charge les écritures simultanées de plusieurs utilisateurs
- Performances limitées avec de très gros volumes de données
- Absence de réplication intégrée
- Capacités limitées pour les applications multi-utilisateurs complexes
Connexion à une base de données SQLite en Python
Connexion de base
import sqlite3
# Connexion à la base de données (si le fichier n'existe pas, il sera créé)
conn = sqlite3.connect('ma_base.db')
# Création d'un curseur pour exécuter les requêtes SQL
cursor = conn.cursor()
Connexion à une base de données en mémoire
Pour le stockage temporaire ou les tests, vous pouvez utiliser une base de données en mémoire :
conn = sqlite3.connect(':memory:')
Configuration des paramètres de connexion
conn = sqlite3.connect('ma_base.db', timeout=10)
conn.execute('PRAGMA foreign_keys = ON') # Activation des clés étrangères
Création d'une table dans SQLite
Création d'une table simple
cursor.execute('''
CREATE TABLE IF NOT EXISTS utilisateurs (
id INTEGER PRIMARY KEY AUTOINCREMENT,
nom TEXT NOT NULL,
age INTEGER
)
''')
conn.commit()
Création d'une table avec contraintes supplémentaires
cursor.execute('''
CREATE TABLE IF NOT EXISTS produits (
id INTEGER PRIMARY KEY AUTOINCREMENT,
nom TEXT NOT NULL UNIQUE,
prix REAL CHECK(prix > 0),
categorie TEXT DEFAULT 'non classé',
date_creation TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
''')
conn.commit()
Création d'index pour l'optimisation
cursor.execute('''
CREATE INDEX IF NOT EXISTS idx_utilisateurs_nom ON utilisateurs(nom)
''')
conn.commit()
Insertion de données dans une table — python sqlite3 insert
Insertion d'un seul enregistrement
L'une des opérations les plus courantes est l'insertion de données dans une table SQLite :
cursor.execute('''
INSERT INTO utilisateurs (nom, age) VALUES (?, ?)
''', ('Jean', 30))
conn.commit()
L'utilisation des points d'interrogation protège contre les injections SQL et est l'approche recommandée.
Insertion en masse de données
utilisateurs = [('Alex