]>
gitweb.pimeys.fr Git - scripts-20-100.git/blob - bde/pretty_print.py
2 # -*- encoding: utf-8 -*-
4 """ Module pour afficher une sortie SQL «Comme si on y était». """
6 def sql_pretty_print(liste
, keys
=None):
7 """Affiche (presque) la même chose que la sortie obtenue dans un prompt psql
8 si keys n'est pas fourni, l'ordre des champs ne sera pas toujours le même
9 crashe si liste est vide"""
11 raise ExceptionsNote
.EmptyResult("Impossible d'afficher un résultat vide.")
13 keys
= liste
[0].keys()
15 for iligne
in range(len(liste
)):
16 for k
, v
in liste
[iligne
].items():
17 obj
= dict(liste
[iligne
])
18 obj
[k
] = ("%s" % v
).decode("utf8")
20 # On cherche la largeur des colonnes
21 didi
= dict([(k
,k
) for k
in keys
])
22 liste_plus_keys
= liste
+ [didi
]
25 len(i
[champ
]) for i
in liste_plus_keys
30 # On aligne à gauche par défaut, mais pas si c'est un nombre
31 nombres
= [int, float, long]
32 templateline
= u
" "+ u
" | ".join([u
"%%(%s)%s%ss" % (key
, u
"-"*(not type(liste
[0][key
]) in nombres
), maxs
[key
]) for key
in keys
]) + u
" \n"
33 output
= templateline
% didi
34 didi2
= dict([(k
, "") for k
in keys
])
35 output
+= (templateline
% didi2
).replace(" ", "-").replace("|", "+")
37 output
+= templateline
% ligne