У меня есть несколько хранимых процедур в базе данных postgresql, которые запускаются из сценария python. Все они выполнены одинаково, и все они работают, кроме одного. Эта хранимая процедура работает нормально, если я запускаю ее из инструмента запросов в pgAdmin, но она ничего не делает при запуске из скрипта. Это не дает ошибку; это просто ничего не делает. Предполагается удалить запись из одной таблицы и обновить поле в другой таблице.
Вот суть хранимой процедуры: https://gist.github.com/algaspar/e7cb4157d2f3f70f8b47439e2a4058a4
Вот Суть сценария: https://gist.github.com/algaspar/3fa548379203aff9d887caed3c92cb64
Я урезал сценарий до того, что не работает. По сути, он считывает файл с несколькими элементами и создает список, который он передает хранимой процедуре с executemany (мой пример просто создает список без чтения файла, но он не работает лучше :(). I может запустить процедуру в инструменте запросов с помощью:
CALL close_item('item1', CURRENT_DATE);
, и он делает то, что должен делать - удаляет запись из таблицы itemchanges и обновляет поле в таблице itemhistory. У кого-нибудь есть идея? почему я не могу запустить эту хранимую процедуру из сценария?
Спасибо -
Al
PS
Я бы очень хотел получить ответ на этот вопрос, поэтому я не делаю этот THE ответ. Я могу решить мою проблему, запустив SQL in, выполняется внутри al oop. Это завершает то, что мне нужно (решил CURRENT_DATE, так список теперь будет содержать только элементы):
for item in my_list:
cursor.execute ("DELETE FROM itemchanges WHERE item = %s", (item,))
ps_connection.commit()
for item in my_list:
cursor.execute ("UPDATE itemhistory SET fixed_date = CURRENT_DATE WHERE item = %s AND fixed_date IS NULL", (item,))
ps_connection.commit()
Хотелось бы узнать, почему вызов хранимой процедуры с executemany не сработал, когда хранимая процедура работала просто как запрос ...