Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| utilisateurs:nuxos:sqlite [Le 21/02/2011, 10:32] – [Utiliser un client graphique] mydjey | utilisateurs:nuxos:sqlite [Le 12/06/2012, 20:30] (Version actuelle) – [Installation du paquet sqlite grigouille | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | {{tag> BROUILLON}} | ||
| + | FIXME voir pour compléter les tags\\ | ||
| + | ---- | ||
| + | ====== SQLite sous Ubuntu ====== | ||
| + | |||
| + | <note help> | ||
| + | Elle permettra d' | ||
| + | |||
| + | Une base SQLite3 a la particularité d' | ||
| + | SQLite3 présente l' | ||
| + | |||
| + | //Cette description est tirée de "C en action" | ||
| + | |||
| + | ===== Installation ===== | ||
| + | |||
| + | Pour installer SQLite3, [[: | ||
| + | Par exemple avec l' | ||
| + | < | ||
| + | |||
| + | Remarque : pour installer SQLite2, | ||
| + | ===== Utilisation en ligne de commande ===== | ||
| + | ==== Lancer le terminal SQLite ==== | ||
| + | |||
| + | Dans un [[: | ||
| + | < | ||
| + | |||
| + | Le curseur indique que vous êtes maintenant dans le " | ||
| + | < | ||
| + | Enter " | ||
| + | Enter SQL statements terminated with a ";" | ||
| + | sqlite> | ||
| + | </ | ||
| + | |||
| + | <note important> | ||
| + | //Toute commande SQLite sera précédée de son curseur afin de bien distinguer les commandes SQLite des autres commandes.// | ||
| + | </ | ||
| + | |||
| + | ==== Quitter le terminal SQLite ==== | ||
| + | < | ||
| + | |||
| + | ==== Lister les commandes SQLite ==== | ||
| + | < | ||
| + | Affichera: | ||
| + | < | ||
| + | .bail ON|OFF Stop after hitting an error. | ||
| + | .databases List names and files of attached databases | ||
| + | .dump ?TABLE? ... Dump the database in an SQL text format | ||
| + | If TABLE specified, only dump tables matching | ||
| + | LIKE pattern TABLE. | ||
| + | .echo ON|OFF Turn command echo on or off | ||
| + | .exit Exit this program | ||
| + | .explain ? | ||
| + | With no args, it turns EXPLAIN on. | ||
| + | .genfkey ? | ||
| + | | ||
| + | | ||
| + | | ||
| + | See file tool/ | ||
| + | distribution for further information. | ||
| + | .header(s) ON|OFF Turn display of headers on or off | ||
| + | .help Show this message | ||
| + | .import FILE TABLE Import data from FILE into TABLE | ||
| + | .indices ? | ||
| + | If TABLE specified, only show indices for tables | ||
| + | | ||
| + | .load FILE ? | ||
| + | .mode MODE ? | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | .nullvalue STRING Print STRING in place of NULL values | ||
| + | .output FILENAME Send output to FILENAME | ||
| + | .output stdout Send output to the screen | ||
| + | .prompt MAIN CONTINUE Replace the standard prompts | ||
| + | .quit Exit this program | ||
| + | .read FILENAME Execute SQL in FILENAME | ||
| + | .restore ?DB? FILE Restore content of DB (default " | ||
| + | .schema ? | ||
| + | If TABLE specified, only show tables matching | ||
| + | LIKE pattern TABLE. | ||
| + | .separator STRING Change separator used by output mode and .import | ||
| + | .show Show the current values for various settings | ||
| + | .tables ? | ||
| + | If TABLE specified, only list tables matching | ||
| + | LIKE pattern TABLE. | ||
| + | .timeout MS Try opening locked tables for MS milliseconds | ||
| + | .width NUM1 NUM2 ... Set column widths for " | ||
| + | .timer ON|OFF Turn the CPU timer measurement on or off | ||
| + | </ | ||
| + | |||
| + | ==== Modifier le format de sortie ==== | ||
| + | Vous pouvez par exemple: | ||
| + | * [[#Afficher le nom des colonnes / Changer l' | ||
| + | * [[#Modifier le séparateur]] | ||
| + | * [[#Modifier la largeur des colonnes]] | ||
| + | * [[#Modifier la sortie en code html]] | ||
| + | | ||
| + | |||
| + | === Afficher le nom des colonnes / Changer l' | ||
| + | * Pour présenter les résultat d'une requête sous forme de tableau dans le terminal on utilisera: | ||
| + | < | ||
| + | sqlite> .headers on | ||
| + | sqlite> .mode column | ||
| + | </ | ||
| + | |||
| + | Et à l' | ||
| + | |||
| + | < | ||
| + | nom age membre | ||
| + | ---------- | ||
| + | dan | ||
| + | bob | ||
| + | </ | ||
| + | |||
| + | * Pour revenir au mode précédent: | ||
| + | < | ||
| + | sqlite> .header off # Mode par défaut | ||
| + | sqlite> .mode list # Mode par défaut | ||
| + | </ | ||
| + | |||
| + | Affichera: | ||
| + | < | ||
| + | dan|23|oui | ||
| + | bob|45|non | ||
| + | </ | ||
| + | |||
| + | === Modifier le séparateur === | ||
| + | |||
| + | * Il est possible de modifier le séparateur dans le mode list: | ||
| + | < | ||
| + | sqlite> .separator ", " | ||
| + | </ | ||
| + | |||
| + | Affichera: | ||
| + | < | ||
| + | dan, 23, oui | ||
| + | bob, 45, non | ||
| + | </ | ||
| + | |||
| + | === Modifier la largeur des colonnes === | ||
| + | |||
| + | * Par défaut, chaque colonne fait 10 caractères de largeur. Il est possible d' | ||
| + | < | ||
| + | sqlite> .width 2 15 10 20 3 | ||
| + | </ | ||
| + | |||
| + | Affichera: | ||
| + | < | ||
| + | id titre auteur | ||
| + | -- --------------- | ||
| + | 1 | ||
| + | 2 le nid des mars franquin | ||
| + | 3 la déesse | ||
| + | </ | ||
| + | |||
| + | |||
| + | === Modifier la sortie en code html === | ||
| + | |||
| + | * Il est possible de sortir directement les résultats en html: | ||
| + | < | ||
| + | sqlite> .mode html | ||
| + | </ | ||
| + | |||
| + | Affichera: | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </TR> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </TR> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </TR> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </TR> | ||
| + | </ | ||
| + | |||
| + | ==== Rappel des paramètres ==== | ||
| + | < | ||
| + | sqlite> .show | ||
| + | </ | ||
| + | |||
| + | Affichera: | ||
| + | < | ||
| + | echo: off | ||
| + | explain: off | ||
| + | headers: off | ||
| + | mode: list | ||
| + | nullvalue: "" | ||
| + | | ||
| + | separator: " | ||
| + | width: | ||
| + | </ | ||
| + | |||
| + | ==== Manipuler une base ==== | ||
| + | Vous pouvez par exemple | ||
| + | * [[#Créer une base - ouvrir une base]] | ||
| + | * [[#Créer une table]] | ||
| + | * [[#Lister les tables]] | ||
| + | * [[#Insérer des valeurs dans la table]] | ||
| + | * Faire une [[#simple requête pour visualiser le contenu de la table]] | ||
| + | * [[#Effacer une valeur dans la table]] | ||
| + | * [[#Ajouter une colonne à la table]] | ||
| + | * [[#Mettre à jour une valeur à la table]] | ||
| + | * [[#Modifier le nom d'une table]] | ||
| + | * [[#Écrire la sortie des résultats dans un fichier]] | ||
| + | * [[#Dumper une table depuis SQLite en format SQL pour sauvegarder la structure et les données sur un disque]] | ||
| + | * [[#Dumper une base en format SQL pour sauvegarder sa structure, ses tables et ses données]] | ||
| + | |||
| + | === Créer une base - ouvrir une base === | ||
| + | < | ||
| + | |||
| + | * Si la base '' | ||
| + | |||
| + | === Créer une table === | ||
| + | |||
| + | Il faut avoir ouvert ou créé une base avant de taper les commandes suivantes: | ||
| + | < | ||
| + | sqlite> CREATE TABLE bandedessinée (id integer primary key, titre VARCHAR(30), | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | < | ||
| + | < | ||
| + | sqlite> CREATE TABLE bandedessinée (id integer primary key, titre TEXT, auteur TEXT, resume TEXT, num REAL, date_creation INTEGER); | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | === Lister les tables === | ||
| + | < | ||
| + | sqlite> .tables | ||
| + | </ | ||
| + | |||
| + | === Insérer des valeurs dans la table === | ||
| + | Un exemple d' | ||
| + | < | ||
| + | sqlite> INSERT INTO " | ||
| + | sqlite> INSERT INTO " | ||
| + | sqlite> INSERT INTO " | ||
| + | </ | ||
| + | |||
| + | === Simple requête pour visualiser le contenu de la table === | ||
| + | < | ||
| + | sqlite> select * from bandedessinée; | ||
| + | </ | ||
| + | |||
| + | Affichera: | ||
| + | < | ||
| + | 1|tintin au congo|hergé|Tintin est au congo.|5.0| | ||
| + | 2|le nid des marsupilamis|franquin|Un reportage incroyable|6.0|2011-02-03 | ||
| + | 3|la déesse|moebius|une aventure extraordinaire|7.0|2011-02-03 18:36:25 | ||
| + | </ | ||
| + | |||
| + | == Requête de visualisation d'une table formatée en sortie COMME une insertion de valeur == | ||
| + | < | ||
| + | sqlite> select * from bandedessinée; | ||
| + | </ | ||
| + | |||
| + | Affichera: | ||
| + | < | ||
| + | INSERT INTO ' | ||
| + | INSERT INTO ' | ||
| + | INSERT INTO ' | ||
| + | </ | ||
| + | |||
| + | == Quelques exemples de requêtes == | ||
| + | |||
| + | * Limiter une requête par nombre d' | ||
| + | sqlite> sqlite> select * from bandedessinée limit 2;</ | ||
| + | 1|tintin au congo|hergé|Tintin est au congo.|5.0||casterman | ||
| + | 2|le nid des marsupilamis|franquin|Un reportage incroyable|6.0||</ | ||
| + | |||
| + | * Sélectionner les titres de la table bandedessinée enregistrés depuis février: < | ||
| + | sqlite> select titre from bandedessinée where strftime(' | ||
| + | le nid des marsupilamis | ||
| + | la déesse</ | ||
| + | |||
| + | === Effacer une valeur dans la table === | ||
| + | < | ||
| + | sqlite> DELETE FROM " | ||
| + | </ | ||
| + | |||
| + | === Ajouter une colonne à la table === | ||
| + | < | ||
| + | sqlite> ALTER TABLE " | ||
| + | </ | ||
| + | |||
| + | |||
| + | === Mettre à jour une valeur à la table === | ||
| + | < | ||
| + | sqlite> UPDATE " | ||
| + | </ | ||
| + | |||
| + | === Modifier le nom d'une table === | ||
| + | < | ||
| + | alter table ' | ||
| + | </ | ||
| + | |||
| + | === Écrire la sortie des résultats dans un fichier === | ||
| + | < | ||
| + | sqlite> .output bd.txt | ||
| + | sqlite> select * from bd; | ||
| + | sqlite> .quit | ||
| + | </ | ||
| + | |||
| + | * Visualiser dans le terminal le fichier créé: | ||
| + | < | ||
| + | cat bd.txt | ||
| + | </ | ||
| + | |||
| + | === Dumper une table depuis SQLite en format SQL pour sauvegarder la structure et les données sur un disque === | ||
| + | |||
| + | == Voir le résultat de la commande .dump == | ||
| + | < | ||
| + | sqlite> .dump bd | ||
| + | |||
| + | PRAGMA foreign_keys=OFF; | ||
| + | BEGIN TRANSACTION; | ||
| + | CREATE TABLE " | ||
| + | INSERT INTO " | ||
| + | INSERT INTO " | ||
| + | INSERT INTO " | ||
| + | COMMIT; | ||
| + | </ | ||
| + | |||
| + | == Rediriger la sortie vers un fichier puis dumper la table depuis SQLite == | ||
| + | < | ||
| + | sqlite> .output bd.sql | ||
| + | sqlite> .dump bd | ||
| + | </ | ||
| + | |||
| + | Le résultat n'est plus affiché dans le terminal, mais redirigé vers le fichier '' | ||
| + | < | ||
| + | sqlite> .quit | ||
| + | cat bd.sql | ||
| + | </ | ||
| + | |||
| + | == Lire directement un fichier dumpé depuis sqlite == | ||
| + | |||
| + | Tout d' | ||
| + | < | ||
| + | sqlite> drop table bd; | ||
| + | </ | ||
| + | |||
| + | Puis lisez le fichier sauvegardé: | ||
| + | < | ||
| + | sqlite> .read bd.sql | ||
| + | sqlite> select * from bd; | ||
| + | </ | ||
| + | |||
| + | Affichera: | ||
| + | < | ||
| + | 1|tintin au congo|hergé|Tintin est au congo.|5.0| | ||
| + | 2|le nid des marsupilamis|franquin|Un reportage incroyable|6.0|2011-02-04 | ||
| + | 3|la déesse|moebius|une aventure géniale|7.0|2011-02-04 17:06:23 | ||
| + | </ | ||
| + | |||
| + | === Dumper une base en format SQL pour sauvegarder sa structure, ses tables et ses données === | ||
| + | |||
| + | == Dumper la base == | ||
| + | < | ||
| + | sqlite3 livres.db .dump > livres.sql | ||
| + | </ | ||
| + | |||
| + | == Récupérer un fichier dumpé pour recréer la base == | ||
| + | |||
| + | Effacez le fichier original avant de procéder à la récupération de la base: | ||
| + | < | ||
| + | rm -r livres.db # | ||
| + | sqlite3 livres.db < livres.sql # | ||
| + | sqlite3 livres.db # | ||
| + | |||
| + | sqlite> select * from bd; # Faire un requête pour vérification | ||
| + | </ | ||
| + | |||
| + | Affichera: | ||
| + | < | ||
| + | 1|tintin au congo|hergé|Tintin est au congo.|5.0| | ||
| + | 2|le nid des marsupilamis|franquin|Un reportage incroyable|6.0|2011-02-04 | ||
| + | 3|la déesse|moebius|une aventure géniale|7.0|2011-02-04 17:06:23 | ||
| + | </ | ||
| + | |||
| + | ===== Utilisation avec un client graphique ===== | ||
| + | |||
| + | Liste de clients graphiques libres disponible sous Linux : | ||
| + | |||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[https:// | ||
| + | |||
| + | ===== Utiliser Sqlite avec Python ===== | ||
| + | |||
| + | Exemple d' | ||
| + | [[: | ||
| + | < | ||
| + | |||
| + | Et ajoutez le code ci-dessous: | ||
| + | |||
| + | <file python test-python.py> | ||
| + | # | ||
| + | #-*- coding: utf-8 -*- | ||
| + | |||
| + | import sqlite3 | ||
| + | | ||
| + | class Mabase(): | ||
| + | | ||
| + | def __init__(self): | ||
| + | |||
| + | self.conn = sqlite3.connect(' | ||
| + | |||
| + | def creer(self): | ||
| + | """ | ||
| + | Renvoi True si reussie, False si déjà créée. """ | ||
| + | | ||
| + | # Obtention d'un curseur | ||
| + | c = self.conn.cursor() | ||
| + | | ||
| + | # Créer une table | ||
| + | try: | ||
| + | c.execute(' | ||
| + | # Inserer deux lignes de données | ||
| + | c.execute(' | ||
| + | c.execute(' | ||
| + | | ||
| + | # Sauvegarder les modifications | ||
| + | self.conn.commit() | ||
| + | | ||
| + | # Fermer le curseur | ||
| + | c.close() | ||
| + | print " | ||
| + | return True | ||
| + | | ||
| + | except: | ||
| + | # Fermer le curseur | ||
| + | c.close() | ||
| + | return False | ||
| + | | ||
| + | def lire(self): | ||
| + | """ | ||
| + | c = self.conn.cursor() | ||
| + | c.execute(" | ||
| + | for row in c: | ||
| + | print row | ||
| + | c.close() | ||
| + | | ||
| + | # Création de l' | ||
| + | mabase = Mabase() | ||
| + | if not mabase.creer(): | ||
| + | mabase.lire() | ||
| + | </ | ||
| + | |||
| + | Modifiez les [[: | ||
| + | < | ||
| + | ./ | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | // | ||
