Exécution d’une procédure stockée PostgreSQL en Python

Dans ce tutoriel nous allons découvrir comment exécuter une fonction/procédure stockée en Python. Une fonction PostgreSQL peut effectuer différentes opérations; il peut s’agir de manipulation ou de récupération de données. Regardons comment exécuter une telle fonction avec Python.
 
 

Prérequis:

Avant d’exécuter le programme suivant, assurez-vous que vous disposez des éléments suivants:

  • Le nom d’utilisateur et le mot de passe dont vous avez besoin pour vous connecter à PostgreSQL.
  • Base de données PostgreSQL et le nom de la procédure stockée ou la fonction que vous souhaitez exécuter.

Pour ce tutoriel, nous avons créé la fonction get_person() dans PostgreSQL qui renvoie une liste d’enregistrements des personnes dont l’adresse est ‘Paris’.

CREATE OR REPLACE FUNCTION get_person()
  RETURNS TABLE(pid INTEGER, pname TEXT, paddress TEXT) AS
$
BEGIN
 RETURN QUERY
 
 SELECT id, name, address
 FROM person where address LIKE 'Paris';

END; $
 
LANGUAGE plpgsql;

 
 

Les étapes pour appeler une fonction ou une procédure stockée avec Python

Nous utilisons le module psycopg2 pour exécuter une fonction PostgreSQL en Python.

Suivez les étapes suivantes pour appeler une fonction ou une procédure stockée avec Python à l’aide de psycopg2.

  • Établissez une connexion PostgreSQL avec Python.
  • Ensuite, créez un objet curseur à l’aide de l’objet de connexion.
  • Exécutez la fonction ou la procédure stockée à l’aide de la méthode cursor.callproc(). (Ici, vous devez connaître le nom de la procédure stockée et ses paramètres IN et OUT).
    cursor.callproc('fonction_ou_procedure',[paramètres IN et OUT,])
  • Analysez le résultat renvoyé par callproc(). Il peut s’agir de lignes de base de données ou simplement le nombre de lignes affectées.
  • Fermez la connexion à la base de données.
  • Capturer toutes les exceptions PostgreSQL qui peuvent survenir au cours du processus.

 
 

Exemple : Exécuter une fonction ou une procédure stockée en Python

Nous avons déjà créé la fonction « get_person() » qui renvoie une liste d’enregistrements des personnes dont l’adresse est ‘Paris’.

import psycopg2

try:
    conn = psycopg2.connect(
					user = "postgres",
					password = "admin",
					host = "localhost",
					port = "5432",
					database = "my_db"
    )
    cur = conn.cursor()

    #appeler la procédure stockée
    cur.callproc('get_person')

    res = cur.fetchall()
    for row in res:
        print("Id = ", row[0])
        print("Name = ", row[1])
        print("Address  = ", row[2])
	
    #fermeture de la connexion à la base de données
    cur.close()
    conn.close()
    print("La connexion PostgreSQL est fermée")

except (Exception, psycopg2.Error) as error :
    print ("Erreur lors de l'appel du procédure stockée", error)

Sortie:

Id =  2
Name =  Thomas
Address  =  Paris

Id =  3
Name =  Ali
Address  =  Paris
La connexion PostgreSQL est fermée

La méthode cursor.callproc() utilise en interne la méthode execute() de l’objet curseur pour appeler une procédure stockée. Vous pouvez donc exécuter directement la requête suivante pour appeler une procédure stockée au lieu d’utiliser cursor.callproc()
 

Partagez cet article

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *