From: Vincent Le Gallic Date: Thu, 10 Mar 2016 03:10:02 +0000 (+0100) Subject: [bde] Création de base.py pour factorisation de getcursor() X-Git-Url: http://gitweb.pimeys.fr/?a=commitdiff_plain;h=de5c78a0305d0f288adba1fa7eef4366d0ceb958;p=scripts-20-100.git [bde] Création de base.py pour factorisation de getcursor() --- diff --git a/bde/base.py b/bde/base.py new file mode 100644 index 0000000..1a3fa65 --- /dev/null +++ b/bde/base.py @@ -0,0 +1,18 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +""" +Des fonctions que j'utilise partout dans mes scripts bde/note. + +Parce que la duplication de code, c'est le mal. +""" + +import psycopg2 +import psycopg2.extras + +def getcursor(): + """Ouvre une connexion à la base de données de la note.""" + con = psycopg2.connect(database="note") + con.set_client_encoding("utf-8") + cur = con.cursor(cursor_factory = psycopg2.extras.DictCursor) + return (con, cur) diff --git a/bde/credits_duplicates.py b/bde/credits_duplicates.py index 3669e8e..7cb2fcb 100755 --- a/bde/credits_duplicates.py +++ b/bde/credits_duplicates.py @@ -1,7 +1,7 @@ #!/usr/bin/env python # -*- encoding: utf-8 -*- -""" Pour trouver les chèque dupliqués sur la note. """ +""" Pour trouver les chèques dupliqués sur la note. """ import psycopg2 import psycopg2.extras @@ -10,12 +10,9 @@ import pprint import subprocess import argparse +import base import pretty_print -def getcursor(): - con = psycopg2.connect(database="note") - con.set_client_encoding("utf-8") - return (con, con.cursor(cursor_factory = psycopg2.extras.DictCursor)) def get_data(cur, delai='1 minute', date='1970-01-01'): """ @@ -62,7 +59,7 @@ def get_data(cur, delai='1 minute', date='1970-01-01'): c.pseudo AS destp, t1.description AS desc1, t2.description AS desc2 - FROM credits t1,credits t2, comptes c + FROM credits t1, credits t2, comptes c WHERE t1.destinataire = c.idbde AND t1.date >= %(date)s AND t2.date >= %(date)s AND t1.type='crédit' @@ -164,7 +161,7 @@ if __name__ == "__main__": args = parser.parse_args() - con, cur = getcursor() + con, cur = base.getcursor() data = get_data(cur, delai=args.deltat, date=args.date) blocks = sort_by_blocks(data) interactive(blocks, cur, args) diff --git a/bde/solde_date.py b/bde/solde_date.py index 193822a..f685c73 100755 --- a/bde/solde_date.py +++ b/bde/solde_date.py @@ -10,17 +10,14 @@ Usage : solde_date.py idbde date """ import sys -import psycopg2,psycopg2.extras +import psycopg2 +import psycopg2.extras -def getcursor(): - """Obtenir une connexion à la base de données.""" - con = psycopg2.connect(database='note') - cur = con.cursor(cursor_factory=psycopg2.extras.DictCursor) - return con, cur +import base def get_solde_date(idbde, date="now"): """Calcule le solde du compte ``idbde`` à la ``date`` donnée.""" - con, cur = getcursor() + con, cur = base.getcursor() cur.execute( """ SELECT COALESCE(sum(montant*quantite), 0) diff --git a/bde/stats/all_past.py b/bde/stats/all_past.py index 20ae663..40f3bea 100755 --- a/bde/stats/all_past.py +++ b/bde/stats/all_past.py @@ -3,12 +3,14 @@ """Pour récupérer les soldes des comptes à plusieurs moments du passé.""" -import depenses import time +import base +import depenses + def get_idbdes(): """Récupère les idbdes de tous les comptes.""" - con, cur = depenses.get_cursor() + con, cur = base.getcursor() cur.execute("SELECT idbde FROM comptes WHERE idbde >= 0;") l = cur.fetchall() l = [i[0] for i in l] diff --git a/bde/stats/base.py b/bde/stats/base.py new file mode 120000 index 0000000..9638ef5 --- /dev/null +++ b/bde/stats/base.py @@ -0,0 +1 @@ +../base.py \ No newline at end of file diff --git a/bde/stats/depenses.py b/bde/stats/depenses.py index fff63d3..88e7c90 100755 --- a/bde/stats/depenses.py +++ b/bde/stats/depenses.py @@ -3,12 +3,11 @@ """Affiche les dépenses totales d'un compte par année + total""" -import psycopg2 -import psycopg2.extras - import sys import argparse +import base + create_temp_table = """ SELECT extract(year FROM date) AS annee, %(select_month)s @@ -43,16 +42,9 @@ display_sum = """ SELECT sum(gains) AS gains, sum(depenses) AS depenses ; """ -def get_cursor(): - """Ouvre une connexion à la bdd.""" - con = psycopg2.connect(database="note") - con.set_client_encoding("utf-8") - cur = con.cursor(cursor_factory = psycopg2.extras.DictCursor) - return (con, cur) - def get_depenses(idbde, bymonth=False): """Récupère toutes les dépenses/gains du compte ``idbde``""" - con, cur = get_cursor() + con, cur = base.getcursor() modifiers = {"select_month" : "", "comma_month" : ""} params = {"idbde" : idbde} if bymonth: