psycopg2 не выполняет функцию PostgreSQL

#python #postgresql #psycopg2

#python #postgresql #psycopg2

Вопрос:

Я пытаюсь вызвать функцию из 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 work ( SELECT, INSERT ).

Ответ №1:

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

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

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

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