psycopg2 не выполняет функцию PostgreSQL - PullRequest
10 голосов
/ 13 ноября 2011

Я пытаюсь вызвать функцию из psycopg2, например:

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()

При вызове этой функции из psql все работает нормально, но при использовании psycopg2 ничего не происходит. Я не получаю исключения. Он просто не вызывает функцию в реальной базе данных.

Также работают другие запросы от psycopg2 (SELECT, INSERT).

1 Ответ

16 голосов
/ 13 ноября 2011

Попробуйте совершить транзакцию перед закрытием соединения:

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

Из документации psycopg2 :

Обратите внимание, что закрытие соединения без внесения изменений в первую очередь вызовет отклонение любого ожидающего изменения, как если бы ROLLBACK был выполнено (если не выбран другой уровень изоляции: см. set_isolation_level ()).

...