Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何在sqlalchemy中进行此查询?_Mysql_Sql_Sqlalchemy_Flask Sqlalchemy - Fatal编程技术网

Mysql 如何在sqlalchemy中进行此查询?

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; 如果有人能帮助我,我将不胜感激

我正在创建一个显示所有维护机的报告,但我需要通过查看\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;
如果有人能帮助我,我将不胜感激

上面的查询将返回一个可枚举的
元组(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'))