如何在sqlalchemy中基于postgres数组类型长度进行过滤?

2024-05-14 10:48:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图根据数组列的长度过滤数据库以获得结果。具体来说,我需要得到长度为<;=给定值

例如:

| COLNAME     |
+-------------+
| {1}         |
| {3,20,3400} |
| {1,4,7}     |
| {3,3279}    |
| {1,4}       |
| {3}         |
| {1,4,54}    |
| {3,44}      |
| {}          |

我需要得到长度<;=2预期结果将是:

| COLNAME  |
+----------+
| {1}      |
| {3,3279} |
| {1,4}    |
| {3}      |
| {3,44}   |
| {}       |

我是新手,所以我自己找不到array_aggarray_length or cardinality (array_length gives null for empty array, I would prefer 0, which cardinality is giving)函数可能会有帮助,我正在研究如何正确使用它,但如果有人知道这将是一个很大的帮助

我已经成功编写了原始sql查询,只需要一些转换为sqlalchemy的帮助:

SELECT *
FROM
(SELECT *, cardinality(COLNAME) AS X FROM tablename) as mod
WHERE X <= 2;

编辑: 我想问题主要是我不明白如何正确使用sqlalchemy,我现在只使用了db.engine.execute('SQL statements').fetchall(),我会在足够好的时候发布答案


Tags: orfromlt数据库sqlalchemy数组arrayselect

热门问题