python - 如何在 SELECT 查询中将列列表包装到数组中?
问题描述
我有一个查询,我正在尝试使用 SQLAlchemy 对 postgres 数据库进行查询。
这是我的查询:
select id, array_remove(ARRAY[a.value1, b.value2, etc.], null) FROM table t
JOIN a on t.id = a.id
JOIN b on t.id = b.id
这提供了一个返回,其中第二列是来自不同表的值数组。目标是让这些列以逗号分隔的单个列值表示。
在 SQL Alchemy 中,我正在生成这些表,因此我有一个 Column 对象本身的列表。当我构建我的查询时,我已经得到了连接和诸如此类的东西,但是我如何构造代码以便我传递我的列列表并产生预期的“ARRAY [column1,column2,等等]”我希望在 SQL 中看到?
这是我目前所处的位置:
my_query.add_columns(func.array_remove(ARRAY(id_cols), null))
ARRAY 类型或数组函数(字面量)似乎都不接受列列表。我尝试将 func.cast 用于一个数组,但这也不起作用,因为它不需要列列表。使用列名的字符串列表并不理想,因为这些列可能在名称上发生冲突......我猜完全限定的名称可能没问题,但似乎也很难使用 SQLAlchemy。
解决方案
推荐阅读
- javascript - JQuery:一旦元素出现,使用 ClearInterval 停止刷新
- html - 如何在html中进行高级文本调整?
- node.js - Firebase 云函数增量计数器
- c# - C# MongoDB 按计算排序
- python - lmfit 步进函数和步长
- scala - 无法访问资源下的文件(streamlets)
- java - JPA 从现有的 CriteriaQuery 创建计数查询
- c++ - 将标量添加到特征矩阵(向量)
- firebase - Flutter 和 Firebase - Apple 登录不起作用
- javascript - 如果它还不是 0,我如何编写一个函数来添加 7 并减去 2