Pages: 1
- Sujet précédent - PL/Python : Appel d'un script Python à partir d'une fonction - Sujet suivant
#1 Mon 26 October 2015 22:20
- Martin Tov
- Juste Inscrit !
- Lieu: Grenoble
- Date d'inscription: 5 Jan 2013
- Messages: 6
PL/Python : Appel d'un script Python à partir d'une fonction
Je tente d'appeler un script Python à partir d'une fonction PostgreSQL écrite en PL/Python.
Mon intuition m'a amené à coder quelque chose comme ça:
Code:
CREATE OR REPLACE FUNCTION foo() Returns boolean AS $$ import subprocess cmd = "C:\\Python27\\python.exe" file_to_execute = "C:\\Users\\manager_gui.py" subprocess.check_call([cmd, file_to_execute]) $$ LANGUAGE 'plpython3u' VOLATILE;
Mais quand j'exécute
Code:
SELECT foo()
il m'est renvoyé ce message d'erreur :
Code:
Command '['C:\\Python27\\python.exe', 'C:\\Users\\manager_gui.py']' returned non-zero exit status 2
Je l'ai googlé et visiblement il s'agit d'un problème de droit d'exécution du script. Mais je ne suis pas vraiment sûr...
Est-il vraiment possible de faire ce genre d'appel avec une fonction PL/Python, et est-ce que je me plante quelque part?
Et si c'est un histoire de permission sur le fichier comment est-ce que pourrait m'en sortir avec ça?
Merci par avance,
Martin
Hors ligne
#2 Thu 29 October 2015 16:29
Re: PL/Python : Appel d'un script Python à partir d'une fonction
Bonjour Martin,
oui on peut appeler des commandes externes depuis un une fonction plpythonu
Voici une fonction créée pour redimensionner les images dont le chemin est stocké en base avec image magick :
Code:
CREATE OR REPLACE FUNCTION outils.redim_image( input character varying, size character varying) RETURNS text AS $BODY$ import subprocess temp = input + '_temp' subprocess.call(["mv", '-f', input, temp]) subprocess.call(["convert", temp, "-resize" , size, input]) subprocess.call(["rm", '-f', temp]) return 'ok' $BODY$ LANGUAGE plpythonu;
Ton erreur semble être une erreur strictement python... et là ça me dépasse.
Mathieu BOSSAERT
Association GeoRezo
Hors ligne
#3 Fri 30 October 2015 10:11
- Martin Tov
- Juste Inscrit !
- Lieu: Grenoble
- Date d'inscription: 5 Jan 2013
- Messages: 6
Re: PL/Python : Appel d'un script Python à partir d'une fonction
Merci pour ton retour documenté Mathieu, au moins je sais que c'est possible, c'est déjà l'essentiel!
Je vais fouiller un peu plus du côté du code Python. Je me demande si c'est pas peut être un souci de portabilité du code, vu que j'appelle un script en Python2.7 avec une fonction en Python3, je sais pas si c'est possible.
Hors ligne
#4 Fri 30 October 2015 10:48
Re: PL/Python : Appel d'un script Python à partir d'une fonction
Bonjour,
Je suis étonné que tu veuilles lancer quelques choses en "...gui...." Donc avec une interface graphique ???
Par rapport à ton problème de script python... Est-ce que ton serveur PostgreSQL est en local et est sous Windows ?
Parce que lorsque les scripts s'executent cela s'effectue dans l'environnement du serveur et non pas du client ...
Cordialement
Hors ligne
Pages: 1
- Sujet précédent - PL/Python : Appel d'un script Python à partir d'une fonction - Sujet suivant