Documentation PostgreSQL 8.0.25 | ||||
---|---|---|---|---|
Précédent | Arrière rapide | Avance rapide | Suivant |
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é.
Les fonctions PL/Python sont déclarées de la façon habituelle, par exemple
CREATE FUNCTION ma_fonction(text) RETURNS text AS 'return args[0]' LANGUAGE plpythonu;
Le code Python donné comme corps de la définition de fonction est transformé en fonction Python. Par exemple, le code ci-dessus devient
def __plpython_procedure_ma_fonction_23456(): return args[0]
en supposant que 23456 est l'OID affecté à la fonction par PostgreSQL.
Si vous ne fournissez pas de valeur de retour, PL/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.
Précédent | Sommaire | Suivant |
Limitations et fonctionnalités absentes | Niveau supérieur | Fonctions de déclencheurs |