【发布时间】:2015-10-20 02:00:14
【问题描述】:
我正在 python 中使用 sqlalchemy 版本 1.0.0 在 MySql 服务器上构建查询。 我们没有在架构中定义外键。
我要构造下一个查询:
select s.visit_date, ss.store_number_1, count(p.pk) num_of_probes
from probedata.session s
inner join probedata.scene ps
on s.session_uid = ps.session_uid
inner join probedata.probe p
on ps.pk = p.scene_fk
inner join static.stores ss
on s.store_fk = ss.pk
where s.status = 'Completed'
group by s.visit_date, ss.store_number_1
查询代码为:
num_of_probes = session.query(StoreSession.visit_date, Stores.store_number_1, func.count(Probe.pk).label('num_of_probes')) \
.select_from(StoreSession) \
.join(Scene, StoreSession.session_uid == Scene.session_uid) \
.join(Probe, Scene.pk ==Probe.scene_fk) \
.join(Stores, StoreSession.store_fk == Stores.pk) \
.filter(StoreSession.status == 'Completed') \
.group_by(StoreSession.visit_date, Stores.store_number_1)
我收到的查询是:
SELECT probedata.session.visit_date AS probedata_session_visit_date, static.stores.store_number_1 AS static_stores_store_number_1, count(probedata.probe.pk) AS num_of_probes
FROM probedata.session
JOIN probedata.scene
ON probedata.session.session_uid = probedata.scene.session_uid AND NULL
JOIN probedata.probe ON probedata.scene.pk = probedata.probe.scene_fk AND NULL
JOIN static.stores ON probedata.session.store_fk = static.stores.pk AND NULL
WHERE probedata.session.status = :status_1
GROUP BY probedata.session.visit_date, static.stores.store_number_1
问题在于 sqlachemy 连接将“AND NULL”添加到 sql 查询中的每个连接。
我知道它是这样做的,因为没有定义外键,而且 SqlAlcemy 0.9.8 没有添加它。
如何消除 1.0.0 中的“AND NULL”条件?
谢谢, 可人
【问题讨论】:
标签: python mysql orm sqlalchemy