我有以下两个查询
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实现此目的的更好方法。我很高兴知道如何。
您可以KeyedTuple
从如下两个查询结果中立即构造新的:
>>> from sqlalchemy.util import KeyedTuple
>>> res = KeyedTuple(a + b, a.keys() + b.keys())
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句