2011-11-13 38 views
8

Sto cercando di chiamare una funzione da psycopg2 come tale:psycopg2 non esegue la funzione di PostgreSQL

conn = psycopg2.connect(host="name.host.ex", user="username", password="secret") 
cur = conn.cursor() 
cur.callproc("f_do_action", ["aaa", "bbb"]) 
cur.close() 
conn.close() 

Quando si chiama questa funzione da psql tutto funziona bene, ma utilizzando psycopg2 nulla sembra accadere. Non faccio eccezione. Semplicemente non chiama la funzione sul database attuale.

Anche altre query da psycopg2 lavoro (SELECT, INSERT).

risposta

14

Prova commettere prima di chiudere il collegamento:

cur.close() 
conn.commit() 
conn.close() 

Da psycopg2 documentation:

Nota che la chiusura di una connessione senza confermare le modifiche prima causerà alcun cambiamento in attesa di essere scartato come se un ROLLBACK è stato eseguito (a meno che non sia stato selezionato un diverso livello di isolamento: vedere set_isolation_level()).

Problemi correlati