📜  在 SQLAlchemy 中对多列求和

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

在 SQLAlchemy 中对多列求和

在本文中,我们将使用Python的 SQLAlchemy 模块对多列求和并获得结果。

安装

要安装 SQLAlchemy 模块,请在终端中运行以下命令:

pip install sqlalchemy pymysql

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

所以,我们要做的是,首先我们将使用 SQLAlchemy 模块连接数据库,然后使用我们的 SQL 和Python技能,我们需要对多个列的值求和并得到结果。

使用的数据库:

因此,对于这篇文章,我们将找出所有玩家的总得分。我们可以通过将玩家表的“score1”、“score2”和“score3”列相加来做到这一点。

方法 1:首先,我们需要使用 SQLAlchemy 创建与数据库的连接。然后我们将对表执行“SELECT”查询,并在其中添加列。最后,我们将获取结果。

SQL 查询将如下所示:

SELECT column1 + column2 + .... + columnN  FROM table_name;

您可以添加任何编号。你想要的列。只需以上述方式指定它们。

Python代码将如下所示:

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'
column1 = 'score1'
column2 = 'score2'
column3 = 'score3'
  
result = connection.execute(
    f'SELECT {column1} + {column2} + {column3} FROM {table_name}')
  
for value in result:
      sum_value = value[0]
    print("Sum : ",sum_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'
  
column1 = 'score1'
column2 = 'score2'
column3 = 'score3'
  
result = connection.execute(
    f'SELECT {column1} , {column2} , {column3} FROM {table_name}')
  
for value in result:
    print("Values of one row :", value)
    sum_value = sum(value)
    print("Sum : ", sum_value)


方法 2:执行相同任务的另一种方法是运行普通的“SELECT”查询并提及我们要在查询中添加的所有列。然后我们将获取结果并在其上运行一个 for 循环。结果的元素将是一个元组,其中包含单行的所有列的值,我们将它们相加得到它们的总和。

SQL 查询将如下所示:

SELECT column1 , column2 , .... , columnN FROM table_name;

例子:

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'
  
column1 = 'score1'
column2 = 'score2'
column3 = 'score3'
  
result = connection.execute(
    f'SELECT {column1} , {column2} , {column3} FROM {table_name}')
  
for value in result:
    print("Values of one row :", value)
    sum_value = sum(value)
    print("Sum : ", sum_value)