]> gitweb.pimeys.fr Git - scripts-20-100.git/blob - bde/stats/all_past.py
[bde] Aliases, comme adhesions
[scripts-20-100.git] / bde / stats / all_past.py
1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3
4 """Pour récupérer les soldes des comptes à plusieurs moments du passé."""
5
6 import time
7
8 import base
9 import depenses
10
11 def get_idbdes():
12 """Récupère les idbdes de tous les comptes."""
13 con, cur = base.getcursor()
14 cur.execute("SELECT idbde FROM comptes WHERE idbde >= 0;")
15 l = cur.fetchall()
16 l = [i[0] for i in l]
17 return l
18
19 def line_csv(idbde, li):
20 """Renvoie la liste ``li`` comme une ligne de fichier csv"""
21 return "%s;%s;%s;%s;%s\n" % (idbde, int(li[0]), int(li[1]), '"%s"' % (li[2],), '"%s"' % (li[3],))
22
23 def to_csv(data, path):
24 """Écrit le csv."""
25 f = open(path, "w")
26 f.write('''N° de compte;Année;Mois;Dépenses;Gains\n''')
27 idbdes = data.keys()
28 idbdes.sort()
29 for i in idbdes:
30 datai = data[i]
31 for l in datai:
32 f.write(line_csv(i, l))
33 f.close()
34
35 def get_all(idbdes, verbose=False):
36 """Récupère toutes les données."""
37 data = {}
38 if verbose:
39 print "Dernier idbde : %s" % (max(idbdes),)
40 tic = time.time()
41 for i in idbdes:
42 data[i] = depenses.get_depenses(i, bymonth=True)[0]
43 if verbose and i % 100 == 0:
44 print i, time.time() - tic
45 return data
46
47 if __name__ == "__main__":
48 idbdes = get_idbdes()
49 idbdes.sort()
50 data = get_all(idbdes, verbose=True)
51 to_csv(data, "all_past.csv")