【发布时间】:2016-08-06 16:29:27
【问题描述】:
我的目标是我有两个表,每个表都描述了用户与“团队”或“公司”之间的关系
如果用户 ID 的表中有任何显示“admin”的行,那么我想知道这一点,否则如果没有行,那么我也需要知道这一点。
到目前为止,我所拥有的如下(UserTeamLink 和 UserCompanyLink)是 Orm 表。
obj = UserTeamLink
q1 = session.query(func.count(obj.type).label("cnt")).filter(obj.type == 'admin').filter(obj.user_id == id) ; str(q1) ; q1.all()
obj = UserCompanyLink
q2 = session.query(func.count(obj.type).label("cnt")).filter(obj.type == 'admin').filter(obj.user_id == id) ; str(q2) ; q2.all()
my_union = q1.union_all(q2)
query = select([func.sum(my_union.c.cnt).label("total_cnt")], from_obj=my_union)
query.all()
但是,"query = select([func.sum(my_union.c.cnt).label("total_cnt")], from_obj=my_union)" 行中断:
AttributeError: 'BaseQuery' object has no attribute 'c'
整个输出如下:
>>> obj = UserTeamLink
>>> q1 = session.query(func.count(obj.type).label("cnt")).filter(obj.type == 'admin').filter(obj.user_id == id) ; str(q1) ; q1.all()
'SELECT count(user_team.type) AS cnt \nFROM user_team \nWHERE user_team.type = :type_1 AND user_team.user_id = :user_id_1'
[(0L,)]
>>> obj = UserCompanyLink
>>> q2 = session.query(func.count(obj.type).label("cnt")).filter(obj.type == 'admin').filter(obj.user_id == id) ; str(q2) ; q2.all()
'SELECT count(user_company.type) AS cnt \nFROM user_company \nWHERE user_company.type = :type_1 AND user_company.user_id = :user_id_1'
[(0L,)]
>>>
>>> my_union = q1.union_all(q2)
>>> query = select([func.sum(my_union.c.cnt).label("total_cnt")], from_obj=my_union)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'BaseQuery' object has no attribute 'c'
有没有办法解决这个问题?
总之,我试图做的是从两个表中选择计数,然后合并到另一个表中,然后添加它们。
谢谢。
【问题讨论】:
标签: python sqlalchemy flask-sqlalchemy