« SQLite » : différence entre les versions
mAucun résumé des modifications |
m (→Python) |
||
(Une version intermédiaire par le même utilisateur non affichée) | |||
Ligne 24 : | Ligne 24 : | ||
La base est ce que l'on appelle un schéma dans les bases de données "riches". | La base est ce que l'on appelle un schéma dans les bases de données "riches". | ||
Dans SQLite un base de donnée c'est... un fichier texte. | Dans SQLite un base de donnée c'est... un fichier texte (essayez un cat du fichier c'est presque humainement compréhensible!) . | ||
Pour créer une base on fait :<syntaxhighlight lang="bash"> | Pour créer une base on fait :<syntaxhighlight lang="bash"> | ||
Ligne 70 : | Ligne 70 : | ||
cursor.execute("INSERT INTO messages (messageId, timestamp, deviceId) VALUES ('33a0ad7a','2022-08-30T11:31:47','be2721c9')") | cursor.execute("INSERT INTO messages (messageId, timestamp, deviceId) VALUES ('33a0ad7a','2022-08-30T11:31:47','be2721c9')") | ||
# Ou bien | |||
cursor.execute("INSERT INTO messages (messageId, timestamp, deviceId) VALUES (?,?,?)","33a0ad7b","2022-08-30T11:31:47","be2721c9")) | |||
cursor.execute("SELECT * FROM messages") | cursor.execute("SELECT * FROM messages") | ||
Ligne 78 : | Ligne 80 : | ||
connection.commit() | connection.commit() | ||
connection.close() | |||
</syntaxhighlight> | </syntaxhighlight> |
Version actuelle datée du 22 février 2024 à 18:45
Lorsque on a besoin d'une base de données relationnelle c'est souvent parce qu'on souhaite y ranger de grosses quantités de données. On veut aussi y accéder à partir de machines tierces avec un accès concurrent et de bonnes performances et dans ce cas on utilisera Oracle si on est riche, PostgeSQL si on est économe et mysql/mariaDB si vraiment les besoins sont limités.
EN revanche si c'est pour stocker des données en quantité faible, sans besoin de performances élevées et sans problèmes d'accès concurrents SQLite est fait pour nous.
Installation
Linux Debian /WSL
sudo apt-get update
sudo apt-get -y install sqlite3
Suffit pour l'installation. La version :
sqlite3 --version
3.37.2 2022-01-06 13:25:41 872ba256cbf61d9290b571c0e6d82a20c224ca3ad82971edc46b29818d5dalt1
Windows
On oublie et on utilise WSL!
Utilisation
Création d'une base
La base est ce que l'on appelle un schéma dans les bases de données "riches".
Dans SQLite un base de donnée c'est... un fichier texte (essayez un cat du fichier c'est presque humainement compréhensible!) .
Pour créer une base on fait :
sqlite3 messages.db
qui nous donne le "prompt":
SQLite version 3.37.2 2022-01-06 13:25:41
Enter ".help" for usage hints.
sqlite>
Les commandes spéciales SQLite commencent par un point ".".
.help affiche ... de l'aide
.databases affiche la ou les bases de données ouvretes
.tables les tables dans la base
.schema <<table>> donne la description d'une table (la commande create table)
Création table
Pour créer une table c'est du SQL standard:
CREATE TABLE messages
(
messageId varchar(40),
timestamp varchar(30),
deviceId varchar(40)
);
Si on veut avoir la structure d'une table (desc <<table>> en Oracle) c'est .schema <<table>>
.schema messages
(
messageId varchar(40),
timestamp varchar(30),
deviceId varchar(40));
Insert
Toujours du SQL
INSERT INTO messages (messageId, timestamp, deviceId)
VALUES ('45cb96e7','2022-08-30T04:47:24','10e14c58');
Programmation
Python
Le python semble inclure sqlite en natif. En tout cas, sur mes environnements, le module sqlite3 est installé par défaut.
import sqlite3
connection=sqlite3.connect("messages.db")
cursor = connection.cursor()
cursor.execute("INSERT INTO messages (messageId, timestamp, deviceId) VALUES ('33a0ad7a','2022-08-30T11:31:47','be2721c9')")
# Ou bien
cursor.execute("INSERT INTO messages (messageId, timestamp, deviceId) VALUES (?,?,?)","33a0ad7b","2022-08-30T11:31:47","be2721c9"))
cursor.execute("SELECT * FROM messages")
rows = cursor.fetchall()
for row in rows:
print(row)
connection.commit()
connection.close()