PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Chamar o procedimento armazenado Postgres SQL do 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

Você esqueceu os parênteses de fechamento e estava tentando chamar as funções no cursor em vez de c e também teve um problema com recuo. Você também deve usar o callproc() funcione conforme documentado aqui.

Como catavaran disse, você deve ler a documentação sobre como executar SQL personalizado e usar espaços reservados. Além disso, no Django 1.6+, as transações são confirmadas automaticamente, então não há necessidade de c.execute("COMMIT")