📜  如何在 SQLAchemy 中按列分数从表中选择最小值和最大值?

📅  最后修改于: 2022-05-13 01:54:52.813000             🧑  作者: Mango

如何在 SQLAchemy 中按列分数从表中选择最小值和最大值?

在本文中,我们将使用 SQLAlchemy 模块从 SQL 表中的列分数中获取最小值和最大值。

SQLAlchemy 是一个很棒且易于使用的Python模块,用于连接 SQL 并在Python中使用 SQL 的特性和功能。在这里,我们提供了一个表,其中包含一个名为“ score ”的列,我们的任务是找出存储在该列中的最大值和最小值。

安装

对于您需要安装 SQLAlchemy 模块的任务,您可以通过以下命令安装该模块:

pip install SQLAlchemy pymysql

注意: pymysql 是我们需要为这篇文章安装的 SQLAlchemy 的依赖项。

使用的数据库:

如您所见,在我们的玩家表中,分数的最小值和最大值分别为 52 和 100,我们的任务是在我们的Python代码中获取这些值。在这篇文章中,我们将通过 2 种方法完成任务:

  • 使用 SQL 的最小值和最大值
  • 使用Python的最小值和最大值

上述两种方法对于执行我们的任务都非常简单和有用。但首先,让我们从连接数据库开始。

方法一:使用 SQL 的 min 和 max

让我们使用在其中运行 min 和 max函数的连接对象(上面创建)运行选择查询。

例子:

Python3
from sqlalchemy import create_engine
  
user , password , host , database = 'root' , '123' , 'localhost' , 'geeksforgeeks'
engine = create_engine(url=f'mysql+pymysql://{user}:{password}@{host}/{database}?charset=utf8')
  
connection = engine.connect()
  
table_name = 'players'
  
result = connection.execute(f'SELECT MIN(score) , MAX(score) FROM {table_name}')
  
min_value = None
max_value = None
  
for elem in result:
    min_value = elem[0]
    max_value = elem[1]
  
print('Min value : ',min_value)
print('Max value : ',max_value)


Python3
from sqlalchemy import create_engine
  
user, password, host, database = 'root', '123', 'localhost', 'geeksforgeeks'
engine = create_engine(
    url=f'mysql+pymysql://{user}:{password}@{host}/{database}?charset=utf8')
  
connection = engine.connect()
  
table_name = 'players'
  
result = connection.execute(f'SELECT score FROM {table_name}')
  
all_values = []
  
for elem in result:
    all_values.append(elem[0])
  
min_value = min(all_values)
max_value = max(all_values)
  
print('Min value : ', min_value)
print('Max value : ', max_value)


结果中的元素存储了两个值。第一个值是最小值,第二个值是列分数的最大值。

输出:

输出:

方法2:使用Python的最小值和最大值

对于这种方法,我们将首先通过以下代码获取所有值,将它们存储在一个列表中,然后在该列表上运行Python的 min 和 max函数。

Python3

from sqlalchemy import create_engine
  
user, password, host, database = 'root', '123', 'localhost', 'geeksforgeeks'
engine = create_engine(
    url=f'mysql+pymysql://{user}:{password}@{host}/{database}?charset=utf8')
  
connection = engine.connect()
  
table_name = 'players'
  
result = connection.execute(f'SELECT score FROM {table_name}')
  
all_values = []
  
for elem in result:
    all_values.append(elem[0])
  
min_value = min(all_values)
max_value = max(all_values)
  
print('Min value : ', min_value)
print('Max value : ', max_value)

输出:

输出: