如何在python中使用sqlite数据获取和进行计算?

时间:2013-07-22 23:08:01

标签: python database sqlite

我想获取特定行中的数据并能够使用它执行计算,到目前为止我有这个:

import sqlite3 as lite
con=con.connect(mydatabase.db)
cur=con.cursor()
query=cur.execute("SELECT price from items where ID=1")
print(cur.fetchone())

返回

(13.5,)

我无法对此进行任何计算。我决定将fetchone()方法视为一个元组并提出这个:

cur.fetchone()[0]

返回

13.5

我可以使用它,但我认为这是一个肮脏的解决方案是否有任何其他方式来获取数据? 我也试过了

for row in cur.fetchall():
   print(row[0])

返回我可以使用的实数,但我不知道为什么会这样。

13.5

我可以使用的数字。我不知道哪两个解决方案更好,或者是否有更高效的解决方案。你能不能给我一个关于fetch对象的简要解释,我发现它们有点令人困惑。非常感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

它不脏。这就是Python的低级sql的工作原理。元组表示列(按照select语句中定义的顺序,请记住,您不应该使用select *,因为无法保证您将以何种顺序接收数据。因此cur.fetchone()[0]绝对正常(只要priceselect查询中是第一位)。

另一方面,fetchall返回满足查询的所有行的列表。因此,调用fetchall的结果是始终一个元组列表。它可能是一个空列表。基本上fetchonefetchall做同样的事情,除了它从fetchall获取下一行(因此多次调用fetchone将获取fetchall中的所有行。请注意,如果没有更多数据,fetchone将返回None

答案 1 :(得分:1)

我不确定你为什么觉得它很脏。但有一点:你说你将方法视为一个元组,但这显然不对:方法返回一个元组。这没关系:您只需使用[0]访问它的第一个元素,就像使用任何其他元组一样。不需要任何额外的循环。