Chapitre 40. PL/Python - Langage proc�dural Python

Table des mati�res
40.1. Fonctions PL/Python
40.2. Fonctions de d�clencheurs
40.3. Acc�s � la base de donn�es

Le langage proc�dural PL/Python permet l'�criture de fonctions PostgreSQL avec le langage Python.

Pour installer PL/Python dans une base de donn�es particuli�res, utilisez createlang plpythonu nom_base..

Astuce�: Si un langage est install� dans template1, toutes les bases nouvellement cr��es se verront install�es ce langage automatiquement.

Depuis PostgreSQL 7.4, PL/Python est seulement disponible en tant que langage <<�sans confiance�>> (ceci signifiant qu'il n'offre aucun moyen de restreindre ce que les utilisateurs en font). Il a donc �t� renomm� en plpythonu. La variante de confiance plpython pourrait �tre de nouveau disponible dans le futur, si un nouveau m�canisme s�curis� d'ex�cution est d�velopp� dans Python.

Note�: Les utilisateurs des paquets sources doivent activer sp�cifiquement la construction de PL/Python lors des �tapes d'installation (r�f�rez-vous aux instructions d'installation pour plus d'informations). Les utilisateurs de paquets binaires pourront trouver PL/Python dans un paquet s�par�.

40.1. Fonctions PL/Python

Le code Python que vous �crivez est transform� en une fonction Python. C'est-�-dire que

CREATE FUNCTION ma_fonction(text) RETURNS text
    AS 'return args[0]'
    LANGUAGE plpythonu;

se voit transform� en

def __plpython_procedure_ma_fonction_23456():
        return args[0]

en supposant que 23456 est l'OID de la fonction.

Si vous ne fournissez pas de valeur de retour, Python renvoie par d�faut None. Le module du langage traduit le None de Python en la valeur NULL en SQL.

Les param�tres de fonctions avec PostgreSQL sont disponibles dans la liste globale args. Dans l'exemple ma_fonction, args[0] contient ce qui a �t� pass� dans l'argument texte. Pour ma_fonction2(text, integer), args[0] contiendrait l'argument de type text et args[1] l'argument de type integer.

Le dictionnaire global SD est disponible pour stocker des donn�es entres les appels de fonctions. Cette variable est une donn�e statique priv�e. Le dictionnaire global GD est une donn�e publique disponible pour toutes les fonctions Python � l'int�rieur d'une session. � utiliser avec pr�caution.

Chaque fonction obtient son propre environnement d'ex�cution dans l'interpr�teur Python, de fa�on � ce que les donn�es globales et les arguments de fonction provenant de ma_fonction ne soient pas disponibles depuis ma_fonction2. L'exception concerne les donn�es du dictionnaire GD comme indiqu� ci-dessus.