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
相关产品推荐
相关产品推荐

