Outils pour utilisateurs

Outils du site


sqlite3_csv_excel

Différences

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

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
sqlite3_csv_excel [2010/10/18 22:17]
tyrtamos
sqlite3_csv_excel [2010/10/18 23:50] (Version actuelle)
tyrtamos
Ligne 1: Ligne 1:
-====== Echanges avec Excel via les fichiers CSV ====== 
- 
-===== Objectif ===== 
- 
-On a un projet avec gestion d'une base de données relationnelle avec sqlite3. ​ 
- 
-Dans ce cadre, on peut rentrer des informations dans la base et en sortir des extractions. L'​outil bureautique courant est un tableur type Excel ou openoffice. ​ 
- 
-La liaison entre la base de données et le tableur peut se faire par fichier CSV: cette interface est l'​objet de cette page.  
- 
-===== Code proposé ===== 
- 
-Il faut bien dire que les fichiers CSV sont en même temps indispensables et très imparfaits. On va donc ici réduire nos ambitions. 
- 
-==== Extraction de la base de données ==== 
- 
-Quand on extrait des données de la base de données, on obtient une "liste de liste",​ chaque sous-liste représentant une ligne de données qui pourra donner, après transfert, une ligne de tableur dans Excel. 
- 
-Voilà, par exemple, une fonction qui permet de lire une table de la base. La base a été ouverte avant par cnx = sqlite3.connect(nomdelabase):​ 
- 
-<code python> 
-def liretable(cnx,​ table): 
-    """​retourne la liste de tous les enregistrements de la table"""​ 
-    cur = cnx.cursor() 
-    cur.execute("""​SELECT * FROM ?;""",​ (table,)) 
-    liste = cur.fetchall() 
-    cur.close() 
-    return liste 
-</​code>​ 
- 
-Et voilà le genre de résultat: 
- 
-<code python> 
-[('​Dupond',​ '​Albert',​... ), ('​Durand',​ '​Gilbert',​ ...)] 
-</​code>​ 
- 
-Et, bien sûr, le type de données récupérées correspond au type définis dans la table: chaine de caractère, entier ou réel. Ce sera important pour la suite: il faudrait que ces types de données soient transmis par le fichier CSV au tableur! 
- 
-==== Ajouter des données à la base de données ==== 
- 
-A l'​inverse,​ pour ajouter ou modifier des donnée à une table, on dispose d'une liste de liste comme précédemment. ​ 
- 
-Voilà, par exemple, le genre de code qui permet d'​ajouter des lignes à une table. La base a été ouverte avant par cnx = sqlite3.connect(nomdelabase): ​ 
- 
-<code python> 
-def ecriretable(cnx,​ table, LL): 
-    """​insere toutes les lignes de la liste LL dans la table  
-       NB: la longueur des lignes doit correspondre à la table! 
-       si la liste LL est vide => ne fait rien 
-    """​ 
-    if len(LL)!=0: 
-        cur = cnx.cursor() 
-        # préparation de la ligne de requête 
-        lg = len(LL[0]) 
-        req = ("​INSERT INTO " + table + " VALUES " + "​("​ + '?,'​*lg)[:​-1] + '​)'​ 
-        # insertion des lignes de la table 
-        for ligne in LL: 
-            cur.execute(req,​ tuple(ligne)) 
-        cnx.commit() ​       
-        cur.close() 
-</​code>​ 
- 
- 
  
  
sqlite3_csv_excel.txt · Dernière modification: 2010/10/18 23:50 par tyrtamos