我有以下两个查询
res=session.query(t_marketing_mailing_stats_tbl).filter(
t_marketing_mailing_stats_tbl.c.mailing_id==mid)
res_t=session.query(t_marketing_time_stat_tbl).filter(
t_marketing_time_stat_tbl.c.mailing_id==mid)
try:
return res.one() + res_t.one()
except NoResultFound as e:
return None
res
和res_t
都是sqlalchemy.util._collections.KeyedTuple
类型,支持添加,但是,生成的对象是一个简单的元组,没有键。
我想得到一个综合结果,所以我做了以下几点:
rv = {}
res=session.query(t_marketing_mailing_stats_tbl).filter(
t_marketing_mailing_stats_tbl.c.mailing_id==mid)
res_t=session.query(t_marketing_time_stat_tbl).filter(
t_marketing_time_stat_tbl.c.mailing_id==mid)
try:
res =res.one()
res_t = res_t.one()
for k in res.keys():
rv[k] = getattr(res, k)
for k in res_t.keys():
rv[k] = getattr(res_t, k)
except NoResultFound as e:
return None
虽然这有效,但我怀疑有一种内置的方式,或者是用sqlalchemy实现这一目标的更好方法。我很乐意知道如何。
答案 0 :(得分:1)
您可以通过以下两个查询结果立即构建新的KeyedTuple
:
>>> from sqlalchemy.util import KeyedTuple
>>> res = KeyedTuple(a + b, a.keys() + b.keys())