Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Formatage d'une requête SQL

7 réponses
Avatar
Denis Bitouzé
[fu2 sur fr.comp.lang.python]

Bonjour,

dans un script python, j'utilise psycopg2 pour interroger une base de
donn=E9es Postgresql. Je souhaiterais pouvoir r=E9cup=E9rer le r=E9sultat d=
'une
requ=EAte sous son formatage habituel, par exemple :

id_uti_1 | id_uti_2 | id_uti_3
----------+----------+----------
5 | 15 |
6 | 23 |
10 | 11 |
13 | 21 | 27=20
26 | 24 |
17 | 18 |

Dans un script bash, cela se fait ais=E9ment en utilisant l'interface =E0
PostgreSQL en ligne de commandes qu'est psql. Mais cela est-il possible
directement en python ?

Merci d'avance.
--=20
Denis

7 réponses

Avatar
Bruno Desthuilliers
Denis Bitouzé a écrit :
[fu2 sur fr.comp.lang.python]

Bonjour,

dans un script python, j'utilise psycopg2 pour interroger une base de
données Postgresql. Je souhaiterais pouvoir récupérer le résultat d'une
requête sous son formatage habituel, par exemple :

id_uti_1 | id_uti_2 | id_uti_3
----------+----------+----------
5 | 15 |
6 | 23 |
10 | 11 |
13 | 21 | 27
26 | 24 |
17 | 18 |




???

j'avoue que je ne vois pas trop l'intérêt ?

Dans un script bash, cela se fait aisément en utilisant l'interface à
PostgreSQL en ligne de commandes qu'est psql. Mais cela est-il possible
directement en python ?



Tu peux toujours passer par un appel système à psql, mais c'est
relativement lourd comparé à une requête directe via psycopg2.
Avatar
Denis Bitouzé
Le jeudi 28/01/10 à 10h20,
Bruno Desthuilliers a
écrit :

j'avoue que je ne vois pas trop l'intérêt ?



Pour ne pas me fatiguer à fignoler un formatage moi-même : je trouve
celui de Postgresql tout à fait suffisant pour l'instant ;)

Tu peux toujours passer par un appel système à psql, mais c'est
relativement lourd comparé à une requête directe via psycopg2.



Pourquoi ? Parce que tu trouves psql lourd en lui-même, ou bien parce
que son appel dans un script python te paraît lourd ?

Merci !
--
Denis
Avatar
Alain Ketterlin
Denis Bitouzé writes:

Bruno Desthuilliers a
écrit :

j'avoue que je ne vois pas trop l'intérêt ?



Pour ne pas me fatiguer à fignoler un formatage moi-même : je t rouve
celui de Postgresql tout à fait suffisant pour l'instant ;)

Tu peux toujours passer par un appel système à psql, mais c'es t
relativement lourd comparé à une requête directe via psyc opg2.



Pourquoi ? Parce que tu trouves psql lourd en lui-même, ou bien parce
que son appel dans un script python te paraît lourd ?



Comme Bruno, je ne comprends pas vraiment le problème. Veux-tu juste
faire apparaître le résultat de la requête, ou bien as-tu be soin des
données par ailleurs dans ton script ?

Dans le premier cas, le mieux est sûrement d'appeler psql. Dans le
second, appeler psql reviendrait à faire une deuxième fois la req uête,
ce qui est, disons, modérément élégant. Sauf donné es vraiment
particulières, un formatage simple devrait être facile à obt enir avec %.

-- Alain.
Avatar
Denis Bitouzé
Le jeudi 28/01/10 à 12h29,
Alain Ketterlin a écrit :

Comme Bruno, je ne comprends pas vraiment le problème.



Pour préciser les raisons de ma question, voici le contexte : je
dispose d'un site sous CPS (un ECM qui s'appuie sur Zope) et je
souhaite insérer dans les espaces privés des membres de ce site des
fichiers, ce qui est possible à partir d'un script python. Mais ces
fichiers (.txt) doivent contenir, présentés sous la forme habituelle de
tables, les résultats de requêtes Postgresql, et je n'ai pas envie de
me fatiguer à les formater moi-même avec python : autant utiliser le
savoir-faire de psql ;)

Veux-tu juste faire apparaître le résultat de la requête :



Donc oui.

ou bien as-tu besoin des données par ailleurs dans ton script ?



Oui aussi.

Dans le premier cas, le mieux est sûrement d'appeler psql. Dans le
second, appeler psql reviendrait à faire une deuxième fois la requê te,
ce qui est, disons, modérément élégant.



J'en conviens, mais je veux le beurre et son argent ;) : accéder aux
données de la base pour mon script (par exemple les identifiants des
membres), et disposer de la mise en forme des requêtes pour les envoyer
dans le fichier .txt (je songe aussi à bénéficier de l'export en
html de la requête que permet psql).

Sauf données vraiment particulières, un formatage simple devrait êt re
facile à obtenir avec %.



Ça doit, mais je pratique trop irrégulièrement python pour le faire
sans me fatiguer.

On m'a par ailleurs indiqué le module prettytable
(http://code.google.com/p/prettytable) qui peut m'être utile.

Merci !
--
Denis
Avatar
William Dode
On 28-01-2010, Denis Bitouzé wrote:

Ça doit, mais je pratique trop irrégulièrement python pour le faire
sans me fatiguer.



En gros c'est typiquement le genre de chose qui va beaucoup plus vite
à faire qu'à chercher comment ne pas le faire ;-)

--
William Dodé - http://flibuste.net
Informaticien Indépendant
Avatar
Denis Bitouzé
Le jeudi 28/01/10 à 14h03,
William Dode a écrit :

En gros c'est typiquement le genre de chose qui va beaucoup plus vite
à faire qu'à chercher comment ne pas le faire ;-)



Pas quand on est rouillé en python comme je le suis ;)
--
Denis
Avatar
Denis Bitouzé
Le jeudi 28/01/10 à 16h40,
Bruno Desthuilliers a
écrit :

Parce qu'un appel à un programme externe est plus coûteux pour le
système.



Je préfère faire suer le burnous au système qu'à moi ! Je plaisante,
hein, j'aime bien aussi les programmes bien chiadés ;)
--
Denis