Python sqlite;将REAL值拉为float并用于计算,将TEXT拉为str并连接

时间:2017-01-18 18:08:18

标签: python sqlite

我一直在努力使用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时作为字符串列表。这似乎是一个标准的要求,但我无法找到它在任何地方如何完成的明确例子。

感谢。

1 个答案:

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