--- /dev/null
+#!/usr/bin/env python
+# -*- encoding: utf-8 -*-
+
+""" Pour savoir combien de fois les gens sont passés en négatif """
+
+import psycopg2
+import psycopg2.extras
+
+def get_data(con):
+ cur = con.cursor(cursor_factory = psycopg2.extras.DictCursor)
+ cur.execute("SELECT * FROM transactions ORDER BY date ASC;")
+ transactions = cur.fetchall()
+ return transactions
+
+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 [(trans["emetteur"], -1), (trans["destinataire"], 1)]:
+ newsolde = soldes[num] + trans["montant"] * trans["quantite"] * signe
+ if soldes[num] >= 0 and newsolde < 0:
+ negs[num].append(t["date"])
+ soldes[num] = newsolde
+ return (negs, soldes)
+
+if __name__ == "__main__":
+ con = psycopg2.connect(database="bde")
+ transactions = get_data(con)
+ (negs, soldes) = combienneg(transactions)