对包含 MySQL 数据库数据的 for 循环进行排序

时间:2021-02-28 16:23:38

标签: python mysql python-3.x mariadb

我写了一个python代码,我想按身高对员工进行排序,如果身高相同,则按体重对他们进行排序 因为我从 MySQL 数据库中调用员工的名字和他们的特性,所以我很难编码......

代码:

import mysql.connector

cnx = mysql.connector.connect(user='root', password='123', host='127.0.0.1', database='company_workers')

cursor = cnx.cursor()

query = "SELECT * FROM workers;"
cursor.execute(query)

for (name, height, weight) in sorted(cursor, key = lambda height: height > height):
    print("%s %s %s" % (name, height, weight))

输出:

Jack 75 180
Charlie 90 190
Chris 75 175

我什至使用了带有 lambda func 的排序方法(也许我写错了...) 如果你能告诉我在高度相同后如何根据他们的体重进行排序,我会很高兴......

期望输出:

Charlie 90 190
Jack 75 180
Chris 75 175

3 个答案:

答案 0 :(得分:1)

只需更改您的 sql 查询并按顺序返回:

import mysql.connector

cnx = mysql.connector.connect(user='root', password='123', host='127.0.0.1', database='company_workers')

cursor = cnx.cursor()

query = "SELECT * FROM workers order by height desc, weight desc, name;"
cursor.execute(query)
data = cursor.fetchall()

在数据中,您将获得有序信息

答案 1 :(得分:1)

您可以通过mysql查询本身对数据进行排序

select * from workers order by height desc, weight desc;

这将首先按高度对行进行排序,如果两行或更多行具有相同的高度,则将按重量对它们进行排序

答案 2 :(得分:0)

让mysql为你做:

SELECT height,weight,<other fields> FROM workers ORDER BY height, weight;