Différences
Ci-dessous, les différences entre deux révisions de la page.
technique:python:python_sqlite [2021/12/22 17:09] – créée francoisa | technique:python:python_sqlite [2024/04/02 15:08] (Version actuelle) – modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Python & SQLite ====== | + | **Cette page est obsolète. Veuillez accéder au contenu |
- | + | ||
- | Sqlite | + | |
- | + | ||
- | Inconvénient : lent, pas de multithread, | + | |
- | + | ||
- | Depuis Linux : sqlite3 monfichier suffit | + | |
- | + | ||
- | Attention, les commandes sqlite sont parfois spécifiques (.help pour en savoir plus) | + | |
- | + | ||
- | Sources | + | |
- | + | ||
- | * https://zestedesavoir.com/tutoriels/1294/des-bases-de-donnees-en-python-avec-sqlite3/ | + | |
- | | + | |
- | + | ||
- | ===== Accès depuis Python ===== | + | |
- | + | ||
- | < | + | |
- | import sqlite3 | + | |
- | + | ||
- | </ | + | |
- | ==== Connexion ==== | + | |
- | + | ||
- | < | + | |
- | connexion = sqlite3.connect(" | + | |
- | + | ||
- | connexion.close() | + | |
- | + | ||
- | </ | + | |
- | + | ||
- | Attention à la correspondance de certains champs Python/SQL : NULL = None, INTEGER = int, REAL = float, TEXT = str... | + | |
- | + | ||
- | ==== Requêtes ==== | + | |
- | + | ||
- | < | + | |
- | curseur = connexion.cursor() | + | |
- | + | ||
- | </ | + | |
- | + | ||
- | Attention, les requêtes n' | + | |
- | + | ||
- | < | + | |
- | # | + | |
- | connexion.commit() | + | |
- | # | + | |
- | connexion.rollback() | + | |
- | + | ||
- | curseur.execute(''' | + | |
- | LONGUE | + | |
- | )''' | + | |
- | + | ||
- | </ | + | |
- | + | ||
- | Plusieurs requêtes " | + | |
- | + | ||
- | Résultat de requêtes avec fetchone, qu'on peut lancer plusieurs fois (ne pas clore curseur avant) | + | |
- | + | ||
- | < | + | |
- | curseur.fetchone() # donne le premier résultat et passe au suivant. | + | |
- | + | ||
- | </ | + | |
- | + | ||
- | Exemple : | + | |
- | + | ||
- | < | + | |
- | curseur.execute(" | + | |
- | result = curseur.fetchone() | + | |
- | while result: | + | |
- | print(result) | + | |
- | result = curseur.fetchone() | + | |
- | + | ||
- | </ | + | |
- | + | ||
- | Passage par fetchmany pour récupérer plusieurs résultats : | + | |
- | + | ||
- | < | + | |
- | print(curseur.fetchmany(nbresultats)) | + | |
- | + | ||
- | </ | + | |
- | + | ||
- | Passage à fetchall pour tout récupérer : | + | |
- | + | ||
- | < | + | |
- | curseur.execute(" | + | |
- | resultats = curseur.fetchall() | + | |
- | + | ||
- | </ | + | |
- | + | ||
- | Ou bien parcours du résultat tant que la requête n'est pas close : | + | |
- | + | ||
- | < | + | |
- | for resultat in curseur: | + | |
- | print(resultat) | + | |
- | + | ||
- | </ | + | |
- | + | ||
- | # Affichera tous les résultats un par un. | + | |
- | + | ||
- | Nombre de résultat impactés par des modifications (pas SELECT) avec rowcount | + | |
- | + | ||
- | < | + | |
- | print(curseur.rowcount) # -1 si pas de modifs. | + | |
- | + | ||
- | </ | + | |
- | + |