如何使用Sqlalchemy postgres搜索列中的多个值

时间:2019-07-02 17:02:47

标签: python sql postgresql sqlalchemy flask-sqlalchemy

我在PostgreSQL中有一个查询,该查询搜索并选择称为“新闻”的数组列中所有值为“ 0”或“ 3”的行。该列具有多个值的数组。例如:

id   | country | news
--------------------- 
one  | xyz     | {'2','4','8'}
two  | esc     | {'0','4','2'}
three| eec     | {'9','3','5'}

所以

SELECT * FROM table WHERE news && '{"0", "3"}';

将导致选择第二行和第三行。完善。但是我需要在sqlalchemy中做到这一点。

有人知道如何用SQLalchemy编写吗?

@balderman帮助我提供了一些我以前使用的sqlalchemy代码的资源:

full_id_list = []
for n in ['0','3']:
    ids = db.session.query(table).filter(table.news.op('@>')([n]))
    full_id_list.append(booklist)

但是有没有使用for循环的简单方法?

2 个答案:

答案 0 :(得分:1)

请参见https://docs.sqlalchemy.org/en/13/dialects/postgresql.html#sqlalchemy.dialects.postgresql.ARRAY.Comparator

import * as tf from '@tensorflow/tfjs';

const model = await tf.loadLayersModel('https://foo.bar/tfjs_artifacts/model.json');

答案 1 :(得分:0)

终于解决了。

db.session.query(Table).filter(Table.news.op('&&')(['0','3']))

我要做的就是将操作(.op)从@>更改为&&,因为&&意味着您可以在具有值数组的列中搜索多个值。