SQLAlchemy - как нарезать массивы, чтобы получить полный диапазон? [:] компилируется в [NULL: NULL] - PullRequest
1 голос
/ 26 января 2020

Я застрял в указанной c проблеме с SQLAlchemy. По сути, у меня есть таблица со столбцом, который является вложенным массивом ({{filename1, file_url1}, {filename2, file_url2}}).

Мне удалось написать запрос фильтра, который выполняет поиск в первом элементе всех массивов (так что в этом случае (по имени файла) с использованием оператора ILIKE.

Тем не менее, у меня есть проблема с правильным запросом ВСЕХ массивов, так как оператор среза [:] создает срез [NULL:NULL] в скомпилированном запросе, в то время как Мне нужен простой [:], так как это то, что поддерживается PostgreSQL.

Запрос в SQLAlchemy выглядит следующим образом

cast(DataStorage.result_files[:][1], sql_string).ilike(f"%{request.args.get('result_files', '')}%")

Но выдает CAST(data_storage.result_files[NULL:NULL][%(param_1)s] AS VARCHAR) ILIKE %(param_2)s вместо CAST(data_storage.result_files[:][%(param_1)s] AS VARCHAR) ILIKE %(param_2)s

Когда первый срез result_files[:][1] установлен в заданный диапазон срезов c, он работает отлично, но у меня проблема с [:]. Есть ли простое решение для передачи [:], как при компиляции запроса?

...