PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Rufen Sie die gespeicherte Postgres SQL-Prozedur von Django auf

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

Sie haben die schließenden Klammern vergessen und versucht, die Funktionen auf cursor aufzurufen statt c und hatte auch ein Problem mit der Einrückung. Sie sollten auch callproc() verwenden Funktion wie hier dokumentiert

Wie Catavaran sagte, sollten Sie die Dokumentation zum Ausführen von benutzerdefiniertem SQL lesen und Platzhalter verwenden. Außerdem werden die Transaktionen in Django 1.6+ automatisch festgeschrieben, sodass c.execute("COMMIT") nicht erforderlich ist