繁体   English   中英

请问我如何总结sqlite3表行中的所有整数元素

[英]Please how do i sum up all the integer elements from a sqlite3 table row

我想使用来自sqlite3数据库表的用户数据来计算一行元素的总和

我使用cursor.fetchall()获取数据库表中的金额行,并尝试使用for循环求和表中的元素,但出现错误

db = sqlite3.connect('my.db')
cursor = db.cursor()
cursor.execute('SELECT amount FROM expenses')
result = cursor.fetchall()
c = 0
for x in result:
    c += x
print(c)

我收到TypeError:+ =不支持的操作数类型:'int'和'tuple'我希望得到金额的总和

我知道sqlite3 SUM命令。 但我想学习如何使用Tkinter解决此问题

采用

c = 0
for x in result:
    c += x[0]

cursor.fetchall()返回一个元组列表,该元组包含每行的列值。 在您的情况下,碰巧只有一列,但它仍然是(一个元素)元组。

据我所知,cursor.fetchall()返回一个元组(如您的错误告诉您),这意味着您对sql查询的所有选择都将被推入该元组。

例如,如果要选择多个列:

'SELECT amount, tax, date FROM expenses' 

您将检索到这样的元组:

(amount, tax, date)

每行都给出该元组。 在您的情况下,结果是一个包含所有行的数组,其中每一行本身都是一个元组,其中只有数量。

长话短说,您要么需要将结果重建为具有列表理解的列表,例如:

db = sqlite3.connect('test.db')
cursor = db.cursor()
cursor.execute('SELECT amount FROM expenses')
result = cursor.fetchall()

result = [amount[0] for amount in result] # Rebuild your result array to contain 
                                          # single values instead of tuples
c = 0
for x in result:
    c += x
print(c)

另一个解决方案是:

db = sqlite3.connect('test.db')
cursor = db.cursor()
cursor.execute('SELECT amount FROM expenses')
result = cursor.fetchall()
c = 0
for x in result:
    c += x[0] # This will retrieve the 0th element from the tuple, which is the amount
print(c)

使用Python内置的sum()doc )函数:

c = sum(i[0] for i in result)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM