0

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

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 对象的简要说明。非常感谢您的帮助。

4

2 回答 2

2

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

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

于 2013-07-22T23:15:40.813 回答
1

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

于 2013-07-22T23:22:18.663 回答