Я вызываю функцию Postgres из Flask-SQLAlchemy.Функция возвращает таблицу с 2 значениями: строка и число:
CREATE OR REPLACE FUNCTION public.test (
id varchar
)
RETURNS TABLE (
project_name varchar,
projects_num integer
) AS
$body$
DECLARE
BEGIN
...
RETURN QUERY (SELECT project.name as project_name, project_nums as projects_num);
END;
$body$
LANGUAGE 'plpgsql'
На стороне колбы я делаю следующий вызов:
engine = create_engine(url)
connection = engine.connect()
result = connection.execute('SELECT "test"(\'123\')').fetchone()
Затем я пытаюсь получитьданные из результата.
for row in result:
print(literal_eval(row))
Это вызывает исключение, потому что на самом деле строка имеет строку:
(my_project, 3)
И, конечно же, она не знает, что это за черт my_project.Как заставить его возвращать результаты правильно или обрабатывать их правильно?Например, он может вернуть ('my_project', 3)
Я решил эту проблему, добавил скобки
('"' || account_object.valid_status || '"')
Но это выглядит ужасно и не могу поверить, что нет нормального способа решения?Еще одна проблема с Null - он просто не включен в кортеж: (,0)
- как с этим справиться?