【发布时间】:2018-12-17 01:06:38
【问题描述】:
假设我们有一个 mysql 数据透视查询(取自对数据透视表问题的回答 MySQL pivot table) 带有内部连接。
select projects.org, SUM(ivt_incidents.severity = 'SEV3') as
sev3_count,
SUM(ivt_incidents.severity = 'SEV2') as sev2_count,
SUM(ivt_incidents.severity = 'SEV1') as sev1_count,
SUM(ivt_incidents.severity = 'SEV0') as sev0_count,
SUM(ivt_incidents.severity like '%SEV%') as total_count from
ivt_incidents inner join projects on ivt_incidents.jira_key =
projects.jira_key group by projects.org order by total_count;
在构建 sqlalchemy 查询方面寻求帮助:
response = db.session.query(
func.sum(Incidents.severity).filter(Incidents.severity == 'SEV3'),
Projects.org).\
join(Projects, Projects.jira_key == Incidents.jira_key).\
group_by(Projects.org)
如果我运行它,它将接受查询,但是如果我调用
response.all()
ProgrammingError: (mysql.connector.errors.ProgrammingError) 1064 (42000): 你的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 '(WHERE ivt_incidents.severity = 'SEV3') AS anon_1, projects.org AS projects_org ' 附近使用正确的语法 [SQL: u'SELECT sum(ivt_incidents.严重性)过滤器(其中 ivt_incidents.severity = %(severity_1)s)AS anon_1,projects.org AS projects_org \nFROM ivt_incidents INNER JOIN 项目 ON projects.jira_key = ivt_incidents.jira_key GROUP BY projects.org'] [参数:{u'严重性_1':'SEV3'}](此错误的背景:http://sqlalche.me/e/f405)
【问题讨论】:
-
在
.filter子句调用Incidents.severity -
哇!什么错字:) 感谢您的回复!
-
db.session.query(func.count(Incidents.severity),Incidents.severity, Projects.org).filter(Incidents.severity.in_(['SEV2','SEV3',' SEV1','SEV0',''])).join(Projects, Projects.jira_key == Incidents.jira_key).group_by(Projects.org, Incidents.severity) 给了我想要的结果。
标签: python mysql sqlalchemy