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