Я получил некоторый код python (psycopg2), с которым следует вставлять данные в базу данных:
def debug(self):
try:
self.connection.execute(
"SELECT test();")
res = self.connection.fetchall()
print(res)
except Exception as e:
print(e)
return
Функция test () в pg sql выглядит так:
CREATE OR REPLACE FUNCTION test(
) RETURNS setof varchar
AS $Body$
BEGIN
INSERT INTO Linie(name) VALUES('3');
RETURN QUERY(SELECT * FROM linie);
END;
$Body$ LANGUAGE plpgsql;
Когда я изменяю значение "name" и выполняю запрос в pgAdmin, в базе данных теперь есть запись. Однако при вызове функции из python она всегда переопределяет значение.
Таблица определяется следующим образом:
CREATE TABLE Linie(
name varchar,
PRIMARY KEY (name)
);
Например, с помощью pgAdmin я могу вставить 1,2,3, 4,5. С python после выполнения 5 эквивалентных запросов это просто 5.
Вызов функции теста с помощью nodeJS работает нормально.
При вызове функции один раз из python и изменении вставки value, а затем снова вызывая его из python, значения не заменяются, а вставляются.
Кроме того, он не выдает никаких ошибок и возвращает таблицу, как следует (кроме замененного значения). почему это происходит и что я могу сделать против этого?