====== SQLite 3 ======
Doc :
* SQLite [[https://www.sqlite.org/docs.html]]
* Librairie Python : [[https://docs.python.org/2/library/sqlite3.html]]
* [[https://www.sqlite.org/datatype3.html|Datatypes In SQLite]]
===== Installation =====
À partir de Python 2.5, **sqlite3** fait partie de la librairie
standard, il n'y a donc rien à installer.
===== Connexion =====
Si le fichier n'existe pas, il est créé au moment de la connexion.
import sqlite3
conn = sqlite3.connect('example.db')
...
conn.commit()
conn.close()
===== Création d'une table =====
cur = conn.cursor()
cur.execute('''CREATE TABLE people (
name text,
age integer,
size real,
weight real)
''')
===== Version et migration de la DB =====
Utilisation de **PRAGMA user_version** pour mettre à jour la structure
d'une base de données dès la connexion :
* [[https://groups.google.com/g/python-sqlite/c/brlzyZeySns]]
===== Requêtes paramétrées =====
==== INSERT ====
cur = conn.cursor()
cur.execute("""INSERT INTO people
(name, age, size, weight)
values
(:name, :age, :size, :weight);""", {
"name" : "Albert Dupont",
"age" : 49,
"size" : 1.85,
"weight": 92.5
})
conn.commit()
==== SELECT ====
cur = conn.cursor()
cur.execute("""select * from people
where name=:who and age=:age;""", {
"who": "Albert Dupont",
"age": 49
})
# Obtenir une ligne du résultat sous forme de tuple
row = cur.fetchone()
# Obtenir toutes les lignes sous forme de liste de tuples
rows = cur.fetchall()
# Boucler sur le résultat directement
rows = cur.execute("...")
for row in rows:
...