Ci-dessous, les différences entre deux révisions de la page.
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' | ||
- | |||
- | La liaison entre la base de données et le tableur peut se faire par fichier CSV: cette interface est l' | ||
- | |||
- | ===== 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", | ||
- | |||
- | 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, | ||
- | """ | ||
- | cur = cnx.cursor() | ||
- | cur.execute(""" | ||
- | liste = cur.fetchall() | ||
- | cur.close() | ||
- | return liste | ||
- | </ | ||
- | |||
- | Et voilà le genre de résultat: | ||
- | |||
- | <code python> | ||
- | [(' | ||
- | </ | ||
- | |||
- | 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' | ||
- | |||
- | Voilà, par exemple, le genre de code qui permet d' | ||
- | |||
- | <code python> | ||
- | def ecriretable(cnx, | ||
- | """ | ||
- | 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 = (" | ||
- | # insertion des lignes de la table | ||
- | for ligne in LL: | ||
- | cur.execute(req, | ||
- | cnx.commit() | ||
- | cur.close() | ||
- | </ | ||
- | |||
- | |||