====== 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: ...