首页 > 解决方案 > 使用烧瓶 sqlalchemy 在查询语句中对查询结果进行编号

问题描述

我想给查询的每一行一个排序号,我知道MySql环境中的SQL语句。用我的测试数据库,没有顺序的sql语句是:

SELECT `department`.`name` AS `department`, `staff`.`firstName` AS `firstName`, `staff`.`lastName` AS `lastName` FROM `department`,`staff` WHERE `staff`.`department_id`=`department`.`id`;

而它在MySql中的查询结果是:

无编号查询

上述sql语句的相关编号sql语句为:

SELECT (@i:=@i+1) AS `id`,`department`.`name` AS `department`, `staff`.`firstName` AS `firstName`, `staff`.`lastName` AS `lastName` FROM `department`,`staff`,(SELECT @i:=0) AS `tmp` WHERE `staff`.`department_id`=`department`.`id`;

而它在MySql中的查询结果是:

带号码查询

我也知道python中第一个没有数字的flask sqlalchemy语句可以是:

qList=db.session.query(Department.name.label("department"),Staff.firstName.label("firstName"),Staff.lastName.label("lastName")).select_from(Department,Staff).filter(Staff.department_id==Department.id).all()

这会给我一个包含上述数据的列表。

但是如何在flask sqlalchemy 语句中编写(SELECT @i:=0) AStmp id 部分?" and "(@i:=@i+1) AS

我使用烧瓶 1.0.2 ,flask_sqlalchemy 2.3.2 。

标签: pythonmysqlflasksqlalchemy

解决方案


推荐阅读