Mysql 如何在sqlalchemy中进行此查询?
我正在创建一个显示所有维护机的报告,但我需要通过查看\u stock\u maintener\u id中的设备型号参考来显示每个维护机拥有的设备数量 我的炼金术中有这种模型Mysql 如何在sqlalchemy中进行此查询?,mysql,sql,sqlalchemy,flask-sqlalchemy,Mysql,Sql,Sqlalchemy,Flask Sqlalchemy,我正在创建一个显示所有维护机的报告,但我需要通过查看\u stock\u maintener\u id中的设备型号参考来显示每个维护机拥有的设备数量 我的炼金术中有这种模型 SELECT maintener.*, (SELECT COUNT(*) FROM device d WHERE d.in_stock_maintener_id = maintener.id) AS in_stock_devices FROM maintener; 如果有人能帮助我,我将不胜感激
SELECT
maintener.*,
(SELECT COUNT(*)
FROM device d
WHERE d.in_stock_maintener_id = maintener.id) AS in_stock_devices
FROM maintener;
如果有人能帮助我,我将不胜感激
上面的查询将返回一个可枚举的元组(Maintener,Integer)
如果希望改为使用列(根据注释),则可以隐式指定查询中所需的列:
sq = (
session
.query(func.count())
.select_from(Device)
.filter(Device.in_stock_maintener_id == Maintener.id)
).as_scalar()
q = session.query(Maintener, sq.label('in_stock_devices'))
或者,如果您想要所有列(如选择*
),则可以查询表而不是映射的实体:
q = session.query(Maintener.id, Maintener.name, sq.label('in_stock_devices'))
上面我假设您使用了声明性扩展。你好,您的anwser帮助我,但是我得到了这个结果:[,(2),(0),(0)]我怎样才能在persist.maintenance.Maintener.object中得到2,0和0,结果是:[,(,(,)类似于库存设备是persist.maintenance.Maintener的一部分。
q = session.query(Maintener.id, Maintener.name, sq.label('in_stock_devices'))
q = session.query(Maintener.__table__, sq.label('in_stock_devices'))