我一直在努力使用sqlite的输出做任何事情,例如我从我的一个列中选择了一些REAL值,默认情况下它们以下列形式出现:
[(0.0,), (10.0,), (2.5,), (15.0,), (1.25,), (0.0,), (0.0,), (1.25,), (0.0,), (None,)]
所以a =那个数据,现在我想对这些值求和,但我不能:
b = sum(a)
因为它告诉我我不能对整数和元组求和(unlcear为什么它在错误中说int不浮动,但无论如何我都能理解为什么元组不行)。
我看到我们可以在sqlite中执行此操作:
a = c.execute('select SUM(values) from TABLE').fetchall()
但是仍然没有给我一个浮动,它的形式是:
[(30.0,)]
所以它很简单,我只想将sqlite的结果作为浮点数列表,当它们是REAL时,或者当它们是TEXT时作为字符串列表。这似乎是一个标准的要求,但我无法找到它在任何地方如何完成的明确例子。
感谢。
答案 0 :(得分:0)
查询以表格的形式返回结果,即作为行列表,每行都是包含列值的元组。 即使查询仅返回单个值,也是如此。
如果提取值太麻烦,请使用辅助函数:
def query_single_value(db, sql, params=()):
return db.execute(sql, params).fetchone()[0]
要从单个列中提取所有值,请使用zip
:
def query_single_column(db, sql, params=()):
return zip(*db.execute(sql, params).fetchall())[0]
或列表理解:
def query_single_column(db, sql, params=()):
return [row[0] for row in db.execute(sql, params)]