Проверьте Postgresql запрос к таблице с JSON столбцами, используя Python - PullRequest
1 голос
/ 15 января 2020

Пример запроса:

SELECT error->>'message' as message
FROM error_cases

На самом деле мой запрос намного сложнее, и я хотел бы убедиться, что будущие изменения кода не уничтожат данные, которые выводит этот запрос. Я хотел бы сравнить результат этого запроса с некоторыми конкретными результатами, которые у меня уже есть. Я использую библиотеку testing.postgresql для создания временной базы данных, запуска запроса, сохранения выходных данных и уничтожения базы данных.
В моем запросе используется запись Postgresql ->>. Я получаю сообщение об ошибке:

psycopg2.errors.UndefinedFunction: operator does not exist: text ->> unknown

Для воспроизведения сначала создаю таблицу:

            cur.execute('CREATE TABLE error_cases (error TEXT NOT NULL)')

Затем вставляю данные:

cur.execute('INSERT INTO error_cases 
             VALUES ('{"message": "someMessage"}')

И выбираю:

select (error->>'message') as message from error_cases

Я посмотрел на sqlalchemy для запроса данных, но проблема в том, что я хочу протестировать этот конкретный запрос, который у меня есть. В sqlalchemy для получения JSON я не могу использовать нотацию Postgresql ->>, которая есть в моем запросе.
--- Есть ли другой способ выполнить запрос, содержащий оператор ->>, для созданной базы данных используя testing.postgresql?

1 Ответ

1 голос
/ 15 января 2020

Я только что обнаружил проблему, которая так проста c - должно быть:
CREATE TABLE error_cases (error JSONB NOT NULL) вместо
CREATE TABLE error_cases (error TEXT NOT NULL)

...