Python-sqlite;将实数值作为浮点并用于计算,将文本作为str并连接

Python-sqlite;将实数值作为浮点并用于计算,将文本作为str并连接,python,sqlite,Python,Sqlite,我一直在努力使用sqlite的输出做任何事情,例如,我从我的一个列中选择了一些实际值,默认情况下它们以以下形式出现: [(0.0,), (10.0,), (2.5,), (15.0,), (1.25,), (0.0,), (0.0,), (1.25,), (0.0,), (None,)] [(30.0,)] 如果a=该数据,现在我想求和这些值,但我不能: b = sum(a) 因为它告诉我我不能对整数和元组求和(除非它为什么在错误中说int不是float,但无论如何我可以理解为什么元组不正

我一直在努力使用sqlite的输出做任何事情,例如,我从我的一个列中选择了一些实际值,默认情况下它们以以下形式出现:

[(0.0,), (10.0,), (2.5,), (15.0,), (1.25,), (0.0,), (0.0,), (1.25,), (0.0,), (None,)]
[(30.0,)]
如果a=该数据,现在我想求和这些值,但我不能:

b = sum(a)
因为它告诉我我不能对整数和元组求和(除非它为什么在错误中说int不是float,但无论如何我可以理解为什么元组不正确)

我看到我们可以在sqlite中实现这一点:

a = c.execute('select SUM(values) from TABLE').fetchall()
但这仍然没有给我一个浮动,它的形式是:

[(0.0,), (10.0,), (2.5,), (15.0,), (1.25,), (0.0,), (0.0,), (1.25,), (0.0,), (None,)]
[(30.0,)]
所以很简单,我只希望sqlite中的结果是真实的浮点列表,或者是文本的字符串列表。这似乎是一个标准的要求,但我找不到明确的例子,说明它是如何做到的


谢谢。

查询以表格的形式返回其结果,即作为行列表,每个行都是包含列值的元组。 即使查询只返回一个值,也是如此

如果提取值对用户来说太麻烦,请使用助手函数:

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)]

查询以表的形式返回结果,即以行列表的形式返回结果,每个行都是包含列值的元组。 即使查询只返回一个值,也是如此

如果提取值对用户来说太麻烦,请使用助手函数:

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)]

在您的示例中,我看不到任何文本值。如果您尝试
a[0][0]
,您将得到
30.0
,因此它是一个浮点值。好的,那么如何在求和之前获得值列表,我也需要提取该值。我还有文本,无法将其提取为字符串列表,这是完全相同的问题,在你的例子中,我看不到任何文本值。如果你尝试
a[0][0]
,你会得到
30.0
,因此它是一个浮点值。好吧,那么我如何在求和之前得到值列表,我也需要提取它。我还有文本,不能将其提取为字符串列表,这是完全相同的问题,我认为这是可行的,但它仍然给出了一个元组:(30.0,)你在说哪一个?列的结果是:(0.0,10.0,2.5,15.0,1.25,0.0,0.0,0.0,1.25,0.0,0.0,无)好的,你的第三个选项给出了[0.0,10.0,2.5,15.0,1.25,0.0,无]范围,所以我认为这就是我可以做算术的列表,对吗?不,它不允许我这么做,但它仍然给出了一个元组:(30.0,)你说的是哪一个?列出来是:(0.0,10.0,2.5,15.0,1.25,0.0,0.0,1.25,0.0,1.25,0.0,1.25,0.0,0.5,15.0,0.0,0.0.0,0.0.0,0.0.0,0.0.25,0,0,0]范围,所以我认为这就是我可以做算术的清单,对吗?不,它不允许