Formatage d'une requête SQL

Le
Denis Bitouzé
[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 |

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 ?

Merci d'avance.
--
Denis
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Bruno Desthuilliers
Le #21069391
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.
Denis Bitouzé
Le #21069991
Le jeudi 28/01/10 à 10h20,
Bruno Desthuilliers é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
Alain Ketterlin
Le #21070601
Denis Bitouzé
Bruno Desthuilliers é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.
Denis Bitouzé
Le #21071301
Le jeudi 28/01/10 à 12h29,
Alain Ketterlin
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
William Dode
Le #21072101
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
Denis Bitouzé
Le #21072091
Le jeudi 28/01/10 à 14h03,
William Dode
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
Denis Bitouzé
Le #21073321
Le jeudi 28/01/10 à 16h40,
Bruno Desthuilliers é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
Publicité
Poster une réponse
Anonyme