PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Chiama la stored procedure SQL di Postgres da 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

Hai dimenticato le parentesi di chiusura e stavi cercando di chiamare le funzioni su cursor invece di c e ha anche avuto un problema con il rientro. Dovresti anche usare callproc() funzione come documentato qui.

Come ha detto catavaran, dovresti leggere la documentazione sull'esecuzione di SQL personalizzato e utilizzare i segnaposto. Inoltre, in Django 1.6+, le transazioni vengono eseguite automaticamente, quindi non è necessario c.execute("COMMIT")