Outils pour utilisateurs

Outils du site


sqlite3_csv_excel

Warning: Undefined array key -1 in /home/clients/a4e6fc1ce1761b72982b805de0f418c4/web/python/mesrecettespython/inc/html.php on line 1458

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 de tyrtamos