2011-11-13 60 views
8

Tôi đang cố gắng để gọi một chức năng từ psycopg2 như ví dụ:psycopg2 không thực hiện chức năng 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() 

Khi gọi chức năng này từ psql tất cả mọi thứ hoạt động tốt nhưng sử dụng psycopg2 gì có thể xảy ra. Tôi không có ngoại lệ. Nó chỉ không gọi hàm trên cơ sở dữ liệu thực tế.

Ngoài ra các truy vấn khác từ psycopg2 hoạt động (SELECT, INSERT).

Trả lời

14

Hãy thử cam kết trước khi đóng kết nối của bạn:

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

Từ psycopg2 documentation:

Lưu ý rằng đóng một kết nối mà không cam kết những thay đổi đầu tiên sẽ gây ra bất kỳ sự thay đổi đang chờ để được bỏ đi như thể một ROLLBACK được thực hiện (trừ khi đã chọn mức cách ly khác: xem set_isolation_level()).

Các vấn đề liên quan