PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Appelez la procédure stockée Postgres SQL à partir de Django

c = connection.cursor()
try:
    c.execute("BEGIN")
    c.callproc("fn_save_message3", (Message_Subject, Message_Content, Message_Type, Message_Category, Created_By, Updated_By))
    results = c.fetchall()
    c.execute("COMMIT")
finally:
    c.close()
print results

Vous avez oublié les parenthèses fermantes et avez essayé d'appeler les fonctions sur cursor au lieu de c et avait aussi un problème avec l'indentation. Vous devez également utiliser le callproc() fonction comme documenté ici.

Comme l'a dit catavaran, vous devriez lire la documentation sur l'exécution de SQL personnalisé et utiliser des espaces réservés. De plus, dans Django 1.6+, les transactions sont validées automatiquement, il n'y a donc pas besoin de c.execute("COMMIT")