technique:python:python_sqlite

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

technique:python:python_sqlite [2021/12/22 17:09] – créée francoisatechnique: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èteVeuillez accéder au contenu à son nouvel emplacement [[https://bibliotech.cemea.org/books/outils-technique/page/python-sqlite|python-sqlite]]**
- +
-Sqlite est une base de données présente sous la forme d'un unique fichier accessible depuis le compte en cours (pas de gestion de droits d'accès, à ma connaissance). +
- +
-Inconvénient : lent, pas de multithread, mais simple et rapide pour des petites sollicitations +
- +
-Depuis Linux : sqlite3 monfichier suffit à s'y connecter si on a les droits d'accès. +
- +
-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/ +
-  https://docs.python.org/fr/3.8/library/sqlite3.html +
- +
-===== Accès depuis Python ===== +
- +
-<code> +
-import sqlite3 +
- +
-</code> +
-==== Connexion ==== +
- +
-<code> +
-connexion = sqlite3.connect("basededonnees.db" #BDD dans le fichier "basededonnees.db" +
- +
-connexion.close()  #Déconnexion +
- +
-</code> +
- +
-Attention à la correspondance de certains champs Python/SQL : NULL = None, INTEGER = int, REAL = float, TEXT = str... +
- +
-==== Requêtes ==== +
- +
-<code> +
-curseur = connexion.cursor()  #Récupération d'un curseur +
- +
-</code> +
- +
-Attention, les requêtes n'impliquent de modification qu'après un commit (ou rollback si besoin) +
- +
-<code> +
-#modifications.... +
-connexion.commit()  #Validation des modifications +
-#modifications.... +
-connexion.rollback()  #Retour à l'état du dernier commit, les modifications effectuées depuis sont perdues +
- +
-curseur.execute('''MA REQUETE +
-    LONGUE +
-)'''+
- +
-</code> +
- +
-Plusieurs requêtes "execute" possibles à la suite, ou utilisation de executemany. Ou encore executescript contenant une liste de commandes. +
- +
-Résultat de requêtes avec fetchone, qu'on peut lancer plusieurs fois (ne pas clore curseur avant) +
- +
-<code> +
-curseur.fetchone() # donne le premier résultat et passe au suivant. +
- +
-</code> +
- +
-Exemple : +
- +
-<code> +
-curseur.execute("SELECT valeur FROM scores WHERE pseudo = ?", donnee) +
-result = curseur.fetchone() +
-while result: +
-    print(result) +
-    result = curseur.fetchone() +
- +
-</code> +
- +
-Passage par fetchmany pour récupérer plusieurs résultats : +
- +
-<code> +
-print(curseur.fetchmany(nbresultats)) +
- +
-</code> +
- +
-Passage à fetchall pour tout récupérer : +
- +
-<code> +
-curseur.execute("SELECT FROM scores"+
-resultats = curseur.fetchall() +
- +
-</code> +
- +
-Ou bien parcours du résultat tant que la requête n'est pas close : +
- +
-<code> +
-for resultat in curseur: +
-    print(resultat) +
- +
-</code> +
- +
-# Affichera tous les résultats un par un. +
- +
-Nombre de résultat impactés par des modifications (pas SELECT) avec rowcount +
- +
-<code> +
-print(curseur.rowcount) # -1 si pas de modifs. +
- +
-</code> +
- +
  • technique/python/python_sqlite.1640189394.txt.gz
  • Dernière modification : 2021/12/22 17:09
  • de francoisa