You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python SQL查询结果求和技术求助(附现有代码)

解决SQL查询结果求和的问题

别慌!我来一步步帮你搞定这个求和需求,代码改起来很简单,我会尽量讲清楚每一步~

首先先修正你原代码里的一个小错误:SQL语句需要用引号括起来,不然Python会把它当成变量报错。然后我们分两种方式实现求和,你可以根据自己的情况选:

方法一:在Python中对查询结果求和

这种方式先把所有cost1的数据查出来,再在Python里累加计算总和,适合数据量不大的场景。

修正并添加求和逻辑后的完整代码:

import pyodbc

# 请确保你已经提前定义好server、database、username、password这几个变量
connection = pyodbc.connect('DRIVER={ODBC Driver 13 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
if connection:
    print("Yes we connected\n")

cur = connection.cursor()
# 注意SQL语句要加上单引号,不然会报错
cur.execute('SELECT cost1 FROM tbl')
data = cur.fetchall()

# 初始化总和为0
total_cost = 0
# 遍历每一行数据,累加cost1的值
for row in data:
    # row是一个元组(比如(150,)),所以用row[0]取出里面的数值
    total_cost += row[0]
    print(row)

# 打印最终计算出的总和
print(f"\n所有cost1的总和是: {total_cost}")

# 记得关闭数据库连接,避免资源浪费
connection.close()

方法二:直接让SQL返回求和结果(更高效)

如果你的数据量比较大,直接让数据库计算总和会更快——不用把所有数据都传到Python里处理,代码也更简洁:

import pyodbc

connection = pyodbc.connect('DRIVER={ODBC Driver 13 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
if connection:
    print("Yes we connected\n")

cur = connection.cursor()
# 用SQL的SUM函数直接在数据库端计算总和
cur.execute('SELECT SUM(cost1) FROM tbl')
# 因为只返回一个结果,用fetchone()就能拿到
total_row = cur.fetchone()
# 处理可能的空值情况(如果所有cost1都是NULL,结果会是None)
total_cost = total_row[0] if total_row[0] is not None else 0

print(f"所有cost1的总和是: {total_cost}")

connection.close()

两种方法都能满足你的需求,要是拿不准选哪个,优先选方法二,效率更高还省事儿~

内容的提问来源于stack exchange,提问作者RBC Kyle Bullard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:22:56