gpt4 book ai didi

SQLAlchemy 从列中获取标签名称

转载 作者:行者123 更新时间:2023-11-29 13:57:19 24 4
gpt4 key购买 nike

我想使用 SQLAlchemy 表中的相同标签来重新聚合一些数据(例如,我想遍历 mytable.c 以准确获取列名)。

我有一些如下所示的支出数据:

| name | region | date | spending |
| John | A | .... | 123 |
| Jack | A | .... | 20 |
| Jill | B | .... | 240 |

然后我将它传递给我们现有的函数,该函数汇总 2 个时期的支出(使用案例语句)并按地区分组:

grouped table:
| Region | Total (this period) | Total (last period) |
| A | 3048 | 1034 |
| B | 2058 | 900 |

该函数返回一个 SQLAlchemy 查询对象,然后我可以在该对象上使用 subquery() 来重新查询,例如:

subquery = get_aggregated_data(original_table)
region_A_results = session.query(subquery).filter(subquery.c.region = 'A')

然后我想重新聚合此子查询(对可以求和的每一列求和,将 region 列替换为字符串“other”。

问题是,如果我遍历 subquery.c,我得到的标签如下所示:

anon_1.region
anon_1.sum_this_period
anon_1.sum_last_period

有没有办法从一组列对象中获取文本标签,而无需 anon_1. 前缀?特别是因为我觉得前缀可能会根据 SQLAlchemy 决定生成查询的方式而改变。

最佳答案

拆分名称字符串并取第二部分,如果要准备名称不以表名为前缀的机会,请将代码放在 try - except block 中:

for col in subquery.c:
try:
print(col.name.split('.')[1])
except IndexError:
print(col.name)

此外,结果代理 (region_A_results) 有一个方法 keys,它返回一个列名列表。同样,如果您不需要表名,可以轻松删除它们。

关于SQLAlchemy 从列中获取标签名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29358694/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com