]>
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». """
8 def sql_pretty_print(liste
, keys
=None):
9 """Affiche (presque) la même chose que la sortie obtenue dans un prompt psql
10 si keys n'est pas fourni, l'ordre des champs ne sera pas toujours le même
11 crashe si liste est vide"""
12 # Histoire d'éviter les effets de bord
13 liste
= copy
.deepcopy(liste
)
15 raise ExceptionsNote
.EmptyResult("Impossible d'afficher un résultat vide.")
17 keys
= liste
[0].keys()
19 for iligne
in range(len(liste
)):
20 for k
, v
in liste
[iligne
].items():
21 obj
= dict(liste
[iligne
])
22 obj
[k
] = ("%s" % v
).decode("utf8")
24 # On cherche la largeur des colonnes
25 didi
= dict([(k
,k
) for k
in keys
])
26 liste_plus_keys
= liste
+ [didi
]
29 len(i
[champ
]) for i
in liste_plus_keys
34 # On aligne à gauche par défaut, mais pas si c'est un nombre
35 nombres
= [int, float, long]
36 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"
37 output
= templateline
% didi
38 didi2
= dict([(k
, "") for k
in keys
])
39 output
+= (templateline
% didi2
).replace(" ", "-").replace("|", "+")
41 output
+= templateline
% ligne