Я пытаюсь использовать Python для запуска функции PostgreSQL, которая вставляет данные из одной таблицы в другую.Если я запускаю функцию в pgAdmin, она работает, но если я запускаю ее через Python, я получаю возвращаемое значение, которое говорит, что оно выполнено, но не вставляет никаких записей.
Вот мой код Python
import psycopg2
from parse_config import fn_parse_config
def run_function():
conn = None
try:
# read database configuration
login_params = fn_parse_config("etl_process.ini", "psycopg_login")
# connect to the PostgreSQL database
conn = psycopg2.connect(**login_params)
# create a cursor object for execution
cur = conn.cursor()
# another way to call a stored procedure
#cur.execute("SELECT * FROM usp_test();")
cur.callproc('usp_test')
# process the result set
row = cur.fetchone()
while row is not None:
print(row)
row = cur.fetchone()
# close the communication with the PostgreSQL database server
cur.close()
except (Exception, psycopg2.DatabaseError) as error:
print(error)
finally:
if conn is not None:
conn.close()
if __name__ == '__main__':
run_function()
Вот моя функция
CREATE OR REPLACE FUNCTION usp_test()
RETURNS integer AS $$
BEGIN
INSERT INTO staging_raw_file (Site,
StyleCode)
select CAST(a.Site as VARCHAR(10)),
CAST(a.StyleCode as VARCHAR(30))
from import_raw_file a;
return 5;
END; $$
LANGUAGE plpgsql;