Sqlalchemy запрос содержит переменную в массиве - PullRequest
0 голосов
/ 21 апреля 2019

Занимался этим уже неделю, без результатов и в Интернете ничего не помогло.

Вопрос в том, как вы запрашиваете массив значений так же, как «.contains» ищет значение вмассив, сохраненный в БД.

В этом примере я хочу запросить все строки, содержащие "white" и строки с "black"

Это пример данных в базе данныхдля простоты.6 строк - «красный» имеет 1 результат, «белый» имеет 3 результата, «черный» имеет 4 результата

id|color|
-------
1|red,white,blue|
2|black,white|
3|black|
4|white|
5|black|
6|black|

Вот некоторые методы, которые Iv пробовал с результатами:

Использование .in_ с массивом.

result = db.session.query(Model).filter(Model.color.in_((['white', 'black']))).all()

Результат дает данные для строк = 3,4,5,6

Использование .contains с массивом.

result = db.session.query(Model).filter(Model.color.contains('white', 'black')).all()

Результат TypeError: contains() takes exactly 2 arguments (3 given)

Использование .like с массивом.

result = db.session.query(Model).filter(Model.color.like('%white%black%')).all()

Результат дает данные для строки 2

В конечном итоге правильным результатом должны быть все строки, так как белый и черный цвета содержатся в столбце цвета.

Большое спасибо за продвинутый,

...