Imaginez : vous écrivez une application et vous avez besoin d'une base de données. Cela signifie généralement installer MySQL ou PostgreSQL, configurer un serveur, créer des utilisateurs, configurer la sécurité... Stop. Et si je vous disais qu'il existe une base de données qui fonctionne sans tout cela ?
Découvrez SQLite. Il ne s'agit pas seulement d'une alternative légère, mais d'une approche complètement différente du travail avec les données. Et si vous êtes un développeur novice, SQLite peut devenir votre meilleur ami au début de votre carrière.
Qu'est-ce que SQLite et pourquoi est-il spécial
SQLite est une base de données relationnelle embarquée. Mais que signifie « intégré » ? Contrairement à MySQL ou PostgreSQL, qui fonctionnent comme des serveurs séparés, SQLite est simplement une bibliothèque que vous connectez à votre application. Toute la base de données est stockée dans un fichier sur le disque.
Cela semble simple ? Parce que c'est le cas. SQLite ne nécessite pas d'installation de serveur, de configuration de port ou de création d'utilisateur. Il vous suffit de créer un fichier avec l'extension .db ou .sqlite et vous disposez d'une base de données complète.
Ce qui rend SQLite unique, c'est qu'il s'agit de la base de données la plus répandue au monde. Elle est intégrée à tous les smartphones Android et iOS, aux navigateurs Chrome et Firefox, aux systèmes d'exploitation Windows et macOS. Selon les développeurs, il existe plus d'un trillion de bases de données SQLite actives. Oui, un trillion, avec douze zéros.
Où est utilisé SQLite
SQLite est idéal pour les tâches qui ne nécessitent pas de travail multi-utilisateur au niveau de la base de données. Il s'agit d'applications de bureau, d'applications mobiles, de systèmes embarqués, de prototypes d'applications Web, de stockage de données local dans les navigateurs.
Des exemples concrets ?
Les messageries comme WhatsApp utilisent SQLite pour stocker l'historique des conversations sur votre téléphone. Les navigateurs stockent les favoris, l'historique et les cookies dans SQLite. Les jeux enregistrent la progression du joueur dans SQLite. Même Dropbox utilise SQLite pour synchroniser les métadonnées des fichiers.
Quand SQLite ne convient-il pas ?
Si vous avez un service Web très sollicité avec des milliers de connexions simultanées, il est préférable de choisir PostgreSQL. Si vous avez besoin de répliquer des données entre les serveurs, SQLite ne peut pas le faire. Si les données sont mesurées en téraoctets, cherchez d'autres solutions.
Installation et premiers pas
Bonne nouvelle : SQLite est peut-être déjà installé sur votre ordinateur. Ouvrez le terminal et entrez la commande sqlite3 --version. Vous avez vu la version ? Super, vous pouvez commencer à travailler.
Si SQLite n'est pas installé, le processus d'installation prend une minute. Sous Windows, téléchargez les binaires précompilés depuis le site officiel. Sous Linux, utilisez le gestionnaire de paquets : sudo apt install sqlite3 pour Ubuntu ou sudo yum install sqlite pour CentOS. Sur macOS, SQLite est généralement déjà préinstallé, mais vous pouvez le mettre à jour via Homebrew avec la commande brew install sqlite3.
Créons la première base de données. Ouvrez le terminal et entrez la commande sqlite3 myapp.db. Vous verrez une invitation SQLite avec le préfixe sqlite>. Félicitations, vous venez de créer une base de données. Oui, c'était si simple.
Bases de travail via la ligne de commande
SQLite dispose d'un shell interactif avec des commandes utiles. Toutes les commandes spéciales commencent par un point. La commande .help affiche la liste des commandes disponibles. La commande .databases affiche les bases de données connectées. La commande .tables affiche toutes les tables de la base de données actuelle. La commande .schema affiche la structure de toutes les tables. La commande .quit ou .exit mettra fin au travail avec SQLite.
Essayons de créer le premier tableau. Supposons que nous créons une application pour la comptabilité des tâches :
CREATE TABLE tasks (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL,
description TEXT,
completed INTEGER DEFAULT 0,
created_at TEXT DEFAULT CURRENT_TIMESTAMP
);Que se passe-t-il ici ? Nous avons créé un tableau avec cinq colonnes. La colonne id est une clé primaire auto-incrémentée, elle sera générée automatiquement. La colonne title est un texte, un champ obligatoire. La colonne description — texte, peut être vide. La colonne completed est un nombre, par défaut 0 (utilisé comme drapeau booléen). La colonne created_at — texte, est automatiquement remplie avec la date du jour.
Faites attention aux types de données. SQLite utilise la saisie dynamique et prend en charge cinq types de stockage de base : NULL (aucune valeur), INTEGER (nombres entiers), REAL (nombres à virgule flottante), TEXT (chaînes de texte) et BLOB (données binaires). C'est plus simple que dans d'autres bases de données, mais c'est suffisant pour la plupart des tâches.
Opérations de base avec les données
Maintenant, ajoutons quelques tâches à notre tableau :
INSERT INTO tasks (title, description)
VALUES ('Learn SQLite', 'Read the article and try the examples');
INSERT INTO tasks (title, description)
VALUES ('Write code', 'Create a simple application with SQLite');
INSERT INTO tasks (title)
VALUES ('Mark task as completed');Voyons ce qui s'est passé :
SELECT * FROM tasks;Vous verrez trois entrées avec des ID générés automatiquement et des dates de création. Notez que dans le troisième enregistrement, le champ description sera NULL — nous ne l'avons pas spécifié.
Marquons la première tâche comme terminée :
UPDATE tasks
SET completed = 1
WHERE id = 1;Maintenant, sélectionnez uniquement les tâches non exécutées :
SELECT id, title, completed
FROM tasks
WHERE completed = 0;Et si vous avez besoin de supprimer une tâche :
DELETE FROM tasks
WHERE id = 3;Ces quatre opérations — SELECT, INSERT, UPDATE, DELETE — constituent la base du travail avec n'importe quelle base de données relationnelle. La syntaxe de SQLite est presque identique à celle de SQL standard, de sorte que les connaissances sont facilement transférables à d'autres SGBD.
Travailler avec SQLite à partir de Python
La meilleure partie de SQLite est que le support est intégré directement dans la bibliothèque standard de Python. Il n'est pas nécessaire d'installer des paquets supplémentaires — le module sqlite3 existe déjà.
Voici un exemple de travail minimal :
import sqlite3
# Nous nous connectons à la base de données (le fichier sera créé automatiquement)
conn = sqlite3.connect('myapp.db')
cursor = conn.cursor()
# Créons un tableau
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT NOT NULL UNIQUE,
email TEXT NOT NULL,
created_at TEXT DEFAULT CURRENT_TIMESTAMP
)
''')
# Ajout d'un utilisateur
cursor.execute(
'INSERT INTO users (username, email) VALUES (?, ?)',
('john_doe', 'john@example.com')
)
# Enregistrer les modifications
conn.commit()
# Nous obtenons tous les utilisateurs
cursor.execute('SELECT * FROM users')
users = cursor.fetchall()
for user in users:
print(f"ID: {user[0]}, Username: {user[1]}, Email: {user[2]}")
# Fermer la connexion
conn.close()Faites attention aux points d'interrogation dans la requête INSERT. Ce sont des espaces réservés aux paramètres, la bonne façon de transmettre des données aux requêtes SQL. N'utilisez jamais de chaînes f ou de concaténation pour insérer des données dans SQL, cela ouvre la porte aux injections SQL.
Une façon plus pratique de travailler est d'utiliser le gestionnaire contextuel :
import sqlite3
with sqlite3.connect('myapp.db') as conn:
cursor = conn.cursor()
# Obtenir des résultats sous forme de dictionnaires au lieu de tuples
conn.row_factory = sqlite3.Row
cursor.execute('SELECT * FROM users WHERE username = ?', ('john_doe',))
user = cursor.fetchone()
if user:
print(f"User found: {user['username']}, {user['email']}")La construction with fermera automatiquement la connexion et enregistrera les modifications. Et row_factory = sqlite3.Row vous permet de faire référence aux colonnes par leur nom au lieu de l'index, ce qui est beaucoup plus pratique.

Travailler avec SQLite à partir de JavaScript
Dans Node.js, la bibliothèque la plus populaire pour travailler avec SQLite est better-sqlite3. Elle est synchrone et très rapide.
Tout d'abord, nous allons installer le paquet :
npm install better-sqlite3Maintenant, nous pouvons travailler avec la base :
const Database = require('better-sqlite3');
const db = new Database('myapp.db');
// Créons un tableau
db.exec(`
CREATE TABLE IF NOT EXISTS products (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
price REAL NOT NULL,
stock INTEGER DEFAULT 0
)
`);
// Requête préparée pour l'insertion
const insert = db.prepare(
'INSERT INTO products (name, price, stock) VALUES (?, ?, ?)'
);
// Nous ajoutons plusieurs produits
const products = [
['Laptop', 45999.99, 5],
['Mouse', 599.00, 20],
['Keyboard', 1299.00, 15]
];
for (const product of products) {
insert.run(product);
}
// Nous recevons toutes les marchandises
const allProducts = db.prepare('SELECT * FROM products').all();
console.log('All products:', allProducts);
// Nous recevons un produit
const laptop = db.prepare('SELECT * FROM products WHERE name = ?').get('Laptop');
console.log('Product found:', laptop);
// Fermer la base de données
db.close();L'avantage de better-sqlite3 est qu'il est synchrone, vous n'avez pas besoin de jouer avec les promesses et async/await pour des opérations simples. Pour les scripts plus complexes, le navigateur utilise Web SQL (obsolète) ou IndexedDB, qui fonctionnent selon des principes différents.
Conseils pratiques et meilleures pratiques
Première règle : utilisez toujours des transactions pour plusieurs opérations liées. Cela garantit non seulement l'intégrité des données, mais accélère également considérablement le travail :
conn = sqlite3.connect('myapp.db')
cursor = conn.cursor()
try:
cursor.execute('BEGIN TRANSACTION')
# Opérations d'insertion multiples
for i in range(1000):
cursor.execute('INSERT INTO logs (message) VALUES (?)', (f'Log {i}',))
cursor.execute('COMMIT')
except Exception as e:
cursor.execute('ROLLBACK')
print(f'Error: {e}')
finally:
conn.close()Sans transaction, mille insertions peuvent prendre plusieurs secondes. Avec une transaction, cela prend une fraction de seconde.
Deuxième conseil : utilisez des index pour les colonnes fréquemment demandées. Si vous recherchez fréquemment des utilisateurs par e-mail, créez un index :
CREATE INDEX idx_users_email ON users(email);Les index accélèrent les requêtes SELECT, mais ralentissent INSERT et UPDATE. Utilisez-les à bon escient.
Troisième point : utilisez régulièrement la commande VACUUM pour optimiser la base de données. SQLite ne libère pas automatiquement de l'espace lors de la suppression d'enregistrements :
VACUUM;Cette commande reconstruit la base de données, libérant l'espace inutilisé et optimisant la structure du fichier.
Quatrièmement : faites des copies de sauvegarde. SQLite est juste un fichier, donc la sauvegarde est élémentaire. Copiez simplement le fichier .db dans un endroit sûr. Mais faites-le lorsque la base de données n'est pas utilisée activement, ou utilisez des commandes spéciales pour la sauvegarde en ligne.
Restrictions à connaître
SQLite est génial, mais il a ses limites. La taille de la base de données peut théoriquement atteindre 281 téraoctets, mais en pratique, il est recommandé de ne pas dépasser quelques gigaoctets. SQLite utilise le verrouillage au niveau de la base de données — lors de l'écriture, les autres processus ne peuvent pas lire. C'est normal pour les applications locales, mais pas pour les serveurs très sollicités.
Pas de prise en charge intégrée des utilisateurs et des droits d'accès - la sécurité est assurée au niveau du système de fichiers. Pas de réplication et de clustering de la boîte. Il n'y a pas de fonctions SQL avancées comme les fonctions de fenêtre (bien que la prise en charge de base soit apparue dans les nouvelles versions).
Mais pour 90 % des tâches d'un développeur novice, ces limitations ne sont pas critiques. SQLite est l'outil idéal pour l'apprentissage, le prototypage et la création d'applications locales.
Outils pour travailler avec SQLite
La ligne de commande est bonne, mais parfois vous voulez une interface visuelle. Il existe de nombreux outils d'interface graphique pour SQLite. DB Browser for SQLite est un outil multiplateforme gratuit et open source, idéal pour les débutants. SQLiteStudio est une autre option gratuite avec prise en charge des plugins. Pour les professionnels, il existe DataGrip de JetBrains ou des extensions pour VS Code comme SQLite Viewer.
Personnellement, je recommande de commencer par DB Browser — il est intuitif, vous permet de créer visuellement des tableaux, de visualiser les données sous forme de tableau, d'exécuter des requêtes SQL avec coloration syntaxique et d'exporter des données dans divers formats.
Travail pratique
La meilleure façon d'apprendre est de pratiquer. Essayez de créer une application simple pour la comptabilité des dépenses. La base de données doit contenir un tableau avec les dépenses (date, catégorie, montant, description) et un tableau avec les catégories (nom, couleur pour la visualisation). Mettez en œuvre l'ajout d'une nouvelle dépense, l'affichage de toutes les dépenses pour une certaine période, le regroupement des dépenses par catégories et le calcul du montant total.
C'est un petit projet, mais il couvrira toutes les opérations de base avec la base de données et vous donnera une expérience pratique avec SQLite.
Conclusion
SQLite n'est pas seulement une base de données pour les débutants. C'est un outil puissant qui est utilisé dans la production de millions d'applications. Sa facilité d'installation et d'utilisation le rend idéal pour la formation, et sa fiabilité et ses performances en font un excellent choix pour les projets réels.
Commencez par SQLite, apprenez les bases des bases de données, comprenez les principes de SQL, puis la transition vers PostgreSQL ou MySQL sera simple et naturelle. Après tout, les concepts sont les mêmes partout, seule l'échelle et le nombre d'opportunités supplémentaires changent.
Alors installez SQLite, créez vos premières tables et commencez à expérimenter. C'est plus facile qu'il n'y paraît et plus intéressant que vous ne pouvez l'imaginer.
Code — une plateforme éducative pour les programmeurs débutants avec des cours sur Python, JavaScript et le développement Web.
Rejoignez notre Communauté Telegram des développeurs, où vous pouvez poser des questions, obtenir de l'aide avec le code et trouver des personnes partageant les mêmes idées pour un apprentissage collaboratif.
