From: Vincent Le Gallic Date: Mon, 30 Sep 2013 12:47:49 +0000 (+0200) Subject: [bde] Rangement X-Git-Url: http://gitweb.pimeys.fr/?a=commitdiff_plain;h=da1154aba10c5e77a8b40bc91de7c0b2cd616af7;p=scripts-20-100.git [bde] Rangement --- diff --git a/.gitignore b/.gitignore index da66d2e..d4a2498 100644 --- a/.gitignore +++ b/.gitignore @@ -19,4 +19,4 @@ newsbot/dicoread.txt ssh/plouf.json color_output test_color_output -bde/integrite/*.sql +bde/old/integrite/*.sql diff --git a/bde/integrite/fix_integrity.py b/bde/integrite/fix_integrity.py deleted file mode 100755 index 9324600..0000000 --- a/bde/integrite/fix_integrity.py +++ /dev/null @@ -1,51 +0,0 @@ -#!/usr/bin/python -# -*- coding:utf8 -*- - -""" Codé pour rétablir l'intégrité de la BDD. - - Pour générer des transactions dans le passé - pour les gens qui n'avaient pas commencé avec un solde nul. -""" - -import psycopg2, psycopg2.extras - -con = psycopg2.connect(database="bde", connection_factory=psycopg2.extras.DictConnection) -cur = con.cursor() - -from commands import getstatusoutput as ex -import os -import sys - -req="""SELECT numcbde,pseudo,gagne-perdu as calcul,effectif,effectif-(gagne-perdu) as a_enlever -FROM - (SELECT numcbde,pseudo, - (SELECT COALESCE(sum(montant*quantite), 0) - FROM transactions - WHERE destinataire=main.numcbde AND valide='t') as gagne, - (SELECT COALESCE(sum(montant*quantite), 0) - FROM transactions - WHERE emetteur=main.numcbde AND valide='t') as perdu, - (SELECT solde - FROM adherents WHERE numcbde=main.numcbde) as effectif - FROM adherents as main) -AS calculs -WHERE gagne-perdu!=effectif AND numcbde>0 ORDER BY numcbde;""" - -cur.execute(req) - -l = cur.fetchall() - -f=open("request_fixing.sql", "w") -f.write("ALTER TABLE transactions DISABLE TRIGGER ALL;\n") -for bug in l: - to_credit = bug["effectif"] - bug["calcul"] - if to_credit > 0: - emet, dest = 0, bug["numcbde"] - elif to_credit < 0: - emet, dest = bug["numcbde"], 0 - f.write("INSERT INTO transactions (conso, emetteur, destinataire, montant, quantite, remarque) VALUES (1, %s, %s, %s, 1, 'Solde initial');\n" % (emet, dest, abs(to_credit))) - # En fait à cause des solde négatifs, il faut DISABLE les triggers, donc on n'a pas besoin d'update après - #f.write("UPDATE adherents SET solde=solde - (%s) WHERE numcbde=%s;\n" % (to_credit, bug["numcbde"])) - -f.write("ALTER TABLE transactions ENABLE TRIGGER ALL;\n") -f.close() diff --git a/bde/integrite/integrite_solde.py b/bde/integrite/integrite_solde.py deleted file mode 100755 index fa49ac3..0000000 --- a/bde/integrite/integrite_solde.py +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/env python -# -*- coding:Latin-1 -*- - -""" Liste les adhérents, fait la somme de leurs transactions et regarde la différence avec le solde actuel. - Broken, apparemment.""" - - -import os - -l=os.popen("psql bde -c \"SELECT numcbde,gagne-perdu as calcul,effectif,effectif-(gagne-perdu) as a_enlever FROM (SELECT numcbde,(SELECT sum(montant*quantite) FROM transactions WHERE destinataire=main.numcbde AND valide='t') as gagne,(SELECT sum(montant*quantite) FROM transactions WHERE emetteur=main.numcbde AND valide='t') as perdu, (SELECT solde FROM adherents WHERE numcbde=main.numcbde) as effectif FROM adherents as main) AS calculs WHERE gagne-perdu!=effectif;\"").readlines() - -g=[] -print l -for i in l[1:-3]: - i=i.strip().split() - print i - g.append([i[0],i[2],i[4],i[6]]) - -f=open("requêtes à effectuer.txt","w") -for i in g: - montant = eval(i[3]) - if montant>0: - f.write("INSERT INTO transactions (date,conso,emetteur,destinataire,montant,quantite,remarque) VALUES ('1970-01-01 00:13:37',1,0,%s,%s,1,'Solde initial');\n"%(i[0],i[3])) - elif montant<0: - f.write("INSERT INTO transactions (date,conso,emetteur,destinataire,montant,quantite,remarque) VALUES ('1970-01-01 00:13:37',1,%s,0,-(%s),1,'Solde initial');\n"%(i[0],i[3])) - f.write("UPDATE adherents SET solde = solde - (%s) WHERE numcbde=%s;\n"%(i[3],i[0])) diff --git a/bde/integrite/memo b/bde/integrite/memo deleted file mode 100644 index f7519c1..0000000 --- a/bde/integrite/memo +++ /dev/null @@ -1,7 +0,0 @@ -# pour créer la table numcbde,gagne,perdu,effectif : - -SELECT numcbde,(SELECT sum(montant*quantite) FROM transactions WHERE destinataire=main.numcbde AND valide='t') as gagne,(SELECT sum(montant*quantite) FROM transactions WHERE emetteur=main.numcbde AND valide='t') as perdu, (SELECT solde FROM adherents WHERE numcbde=main.numcbde) as effectif FROM adherents as main; - -# et créer la table + en extraire seulement les gens intéressants : -# NB : c'est long à exécuter... -SELECT numcbde,gagne-perdu,effectif FROM (SELECT numcbde,(SELECT sum(montant*quantite) FROM transactions WHERE destinataire=main.numcbde AND valide='t') as gagne,(SELECT sum(montant*quantite) FROM transactions WHERE emetteur=main.numcbde AND valide='t') as perdu, (SELECT solde FROM adherents WHERE numcbde=main.numcbde) as effectif FROM adherents as main) AS calculs WHERE gagne-perdu!=effectif; diff --git a/bde/old/integrite/fix_integrity.py b/bde/old/integrite/fix_integrity.py new file mode 100755 index 0000000..9324600 --- /dev/null +++ b/bde/old/integrite/fix_integrity.py @@ -0,0 +1,51 @@ +#!/usr/bin/python +# -*- coding:utf8 -*- + +""" Codé pour rétablir l'intégrité de la BDD. + + Pour générer des transactions dans le passé + pour les gens qui n'avaient pas commencé avec un solde nul. +""" + +import psycopg2, psycopg2.extras + +con = psycopg2.connect(database="bde", connection_factory=psycopg2.extras.DictConnection) +cur = con.cursor() + +from commands import getstatusoutput as ex +import os +import sys + +req="""SELECT numcbde,pseudo,gagne-perdu as calcul,effectif,effectif-(gagne-perdu) as a_enlever +FROM + (SELECT numcbde,pseudo, + (SELECT COALESCE(sum(montant*quantite), 0) + FROM transactions + WHERE destinataire=main.numcbde AND valide='t') as gagne, + (SELECT COALESCE(sum(montant*quantite), 0) + FROM transactions + WHERE emetteur=main.numcbde AND valide='t') as perdu, + (SELECT solde + FROM adherents WHERE numcbde=main.numcbde) as effectif + FROM adherents as main) +AS calculs +WHERE gagne-perdu!=effectif AND numcbde>0 ORDER BY numcbde;""" + +cur.execute(req) + +l = cur.fetchall() + +f=open("request_fixing.sql", "w") +f.write("ALTER TABLE transactions DISABLE TRIGGER ALL;\n") +for bug in l: + to_credit = bug["effectif"] - bug["calcul"] + if to_credit > 0: + emet, dest = 0, bug["numcbde"] + elif to_credit < 0: + emet, dest = bug["numcbde"], 0 + f.write("INSERT INTO transactions (conso, emetteur, destinataire, montant, quantite, remarque) VALUES (1, %s, %s, %s, 1, 'Solde initial');\n" % (emet, dest, abs(to_credit))) + # En fait à cause des solde négatifs, il faut DISABLE les triggers, donc on n'a pas besoin d'update après + #f.write("UPDATE adherents SET solde=solde - (%s) WHERE numcbde=%s;\n" % (to_credit, bug["numcbde"])) + +f.write("ALTER TABLE transactions ENABLE TRIGGER ALL;\n") +f.close() diff --git a/bde/old/integrite/integrite_solde.py b/bde/old/integrite/integrite_solde.py new file mode 100755 index 0000000..fa49ac3 --- /dev/null +++ b/bde/old/integrite/integrite_solde.py @@ -0,0 +1,26 @@ +#!/usr/bin/env python +# -*- coding:Latin-1 -*- + +""" Liste les adhérents, fait la somme de leurs transactions et regarde la différence avec le solde actuel. + Broken, apparemment.""" + + +import os + +l=os.popen("psql bde -c \"SELECT numcbde,gagne-perdu as calcul,effectif,effectif-(gagne-perdu) as a_enlever FROM (SELECT numcbde,(SELECT sum(montant*quantite) FROM transactions WHERE destinataire=main.numcbde AND valide='t') as gagne,(SELECT sum(montant*quantite) FROM transactions WHERE emetteur=main.numcbde AND valide='t') as perdu, (SELECT solde FROM adherents WHERE numcbde=main.numcbde) as effectif FROM adherents as main) AS calculs WHERE gagne-perdu!=effectif;\"").readlines() + +g=[] +print l +for i in l[1:-3]: + i=i.strip().split() + print i + g.append([i[0],i[2],i[4],i[6]]) + +f=open("requêtes à effectuer.txt","w") +for i in g: + montant = eval(i[3]) + if montant>0: + f.write("INSERT INTO transactions (date,conso,emetteur,destinataire,montant,quantite,remarque) VALUES ('1970-01-01 00:13:37',1,0,%s,%s,1,'Solde initial');\n"%(i[0],i[3])) + elif montant<0: + f.write("INSERT INTO transactions (date,conso,emetteur,destinataire,montant,quantite,remarque) VALUES ('1970-01-01 00:13:37',1,%s,0,-(%s),1,'Solde initial');\n"%(i[0],i[3])) + f.write("UPDATE adherents SET solde = solde - (%s) WHERE numcbde=%s;\n"%(i[3],i[0])) diff --git a/bde/old/integrite/memo b/bde/old/integrite/memo new file mode 100644 index 0000000..f7519c1 --- /dev/null +++ b/bde/old/integrite/memo @@ -0,0 +1,7 @@ +# pour créer la table numcbde,gagne,perdu,effectif : + +SELECT numcbde,(SELECT sum(montant*quantite) FROM transactions WHERE destinataire=main.numcbde AND valide='t') as gagne,(SELECT sum(montant*quantite) FROM transactions WHERE emetteur=main.numcbde AND valide='t') as perdu, (SELECT solde FROM adherents WHERE numcbde=main.numcbde) as effectif FROM adherents as main; + +# et créer la table + en extraire seulement les gens intéressants : +# NB : c'est long à exécuter... +SELECT numcbde,gagne-perdu,effectif FROM (SELECT numcbde,(SELECT sum(montant*quantite) FROM transactions WHERE destinataire=main.numcbde AND valide='t') as gagne,(SELECT sum(montant*quantite) FROM transactions WHERE emetteur=main.numcbde AND valide='t') as perdu, (SELECT solde FROM adherents WHERE numcbde=main.numcbde) as effectif FROM adherents as main) AS calculs WHERE gagne-perdu!=effectif;