X-Git-Url: http://gitweb.pimeys.fr/?a=blobdiff_plain;f=bde%2Fcombiennegs.py;h=1e62cd16d4c7720c78a6fdb9b028ef5f220624c9;hb=2c12ef8241190048fa21543666021af9b11e3d37;hp=c6f43fbf51d2e9ab511959571d32b06cd192b624;hpb=dd4a5a0ac424467f9ba2d74bef5e485fffa1079b;p=scripts-20-100.git diff --git a/bde/combiennegs.py b/bde/combiennegs.py index c6f43fb..1e62cd1 100755 --- a/bde/combiennegs.py +++ b/bde/combiennegs.py @@ -3,31 +3,28 @@ """ Pour savoir combien de fois les gens sont passés en négatif """ -import psyopg2 -import psyopg2.extras +import psycopg2 +import psycopg2.extras -year = 2014 - -def get_data(con, year): - cur = con.getcursor(cursor_factory = psycopg2.DictCursor) +def get_data(con): + cur = con.cursor(cursor_factory = psycopg2.extras.DictCursor) cur.execute("SELECT * FROM transactions ORDER BY date ASC;") transactions = cur.fetchall() - cur.execute("SELECT adherent FROM inscriptions WHERE annee = %s;", (year,)) - numcbdes = cur.fetchall() - return (numcbdes, transactions) + return transactions -def combienneg(numcbdes, alltrans): - soldes = {n : 0 for n in numcbdes} - nbnegs = {n : 0 for n in numcbdes} +def combienneg(alltrans): + nums = list(set([t["emetteur"] for t in alltrans] + [t["destinataire"] for t in alltrans])) + soldes = dict([(n, 0) for n in nums]) + negs = dict([(n, []) for n in nums]) for trans in [t for t in alltrans if t["valide"]]: - for (num, signe) in [(t["emetteur"], -1), (t["destinataire"], 1)]: - newsolde = soldes[num] + t["montant"] * t["quantite"] * signe + for (num, signe) in [(trans["emetteur"], -1), (trans["destinataire"], 1)]: + newsolde = soldes[num] + trans["montant"] * trans["quantite"] * signe if soldes[num] >= 0 and newsolde < 0: - nbnegs[num] += 1 - soldes[num] += newsolde - return nbnegs + negs[num].append(t["date"]) + soldes[num] = newsolde + return (negs, soldes) if __name__ == "__main__": - con = psycopg2.connect("bde") - numcbdes, transactions = get_data(con, year) - nbnegs = combienneg(numcbdes, transactions) + con = psycopg2.connect(database="bde") + transactions = get_data(con) + (negs, soldes) = combienneg(transactions)