如何在python中获取sqlite数据并进行计算?
我希望获取特定行中的数据,并能够使用它执行计算,到目前为止,我有以下几点:如何在python中获取sqlite数据并进行计算?,python,database,sqlite,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,) 13.5 我不能用那个做任何计算。我决定将fetchone()方法视为一个元组,并得出以下结论:
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,)
13.5
我不能用那个做任何计算。我决定将fetchone()方法视为一个元组,并得出以下结论:
cur.fetchone()[0]
返回
(13.5,)
13.5
我可以这样做,但我认为这是一个肮脏的解决方案。还有其他方法获取数据吗?
我也试过了
for row in cur.fetchall():
print(row[0])
它返回了一个我可以使用的真实数字,但我不知道为什么它有效
13.5
我可以用的号码。我不知道这两个解决方案中哪一个更好,或者是否有更有效的解决方案。你能不能给我一个简单的解释,我发现他们有点混乱。非常感谢您的帮助。它不脏。这就是使用Python的低级sql的工作原理。Tuple表示列(按照
select
语句中定义的顺序,请记住不要使用select*
,因为不能保证您将以什么顺序接收数据)。因此,cur.fetchone()[0]
绝对可以(只要price
在select
query中是第一位的)
另一方面,
fetchall
返回满足查询的所有行的列表。因此,调用fetchall
的结果是始终一个元组列表。但它可能是一个空列表。基本上,fetchone
与fetchall
做的事情相同,只是它从fetchall
获取下一行(因此多次调用fetchone
将获取fetchall
中的所有行)。请注意,如果没有更多数据,fetchone
将返回None
。它不是脏的。这就是使用Python的低级sql的工作原理。Tuple表示列(按照select
语句中定义的顺序,请记住不要使用select*
,因为不能保证您将以什么顺序接收数据)。因此,cur.fetchone()[0]
绝对可以(只要price
在select
query中是第一位的)
另一方面,
fetchall
返回满足查询的所有行的列表。因此,调用fetchall
的结果是始终一个元组列表。但它可能是一个空列表。基本上,fetchone
与fetchall
做的事情相同,只是它从fetchall
获取下一行(因此多次调用fetchone
将获取fetchall
中的所有行)。请注意,如果没有更多数据,fetchone
将返回None
。我不确定您为什么认为它脏。但有一点是:您说您将该方法视为一个元组,但这显然是不对的:该方法返回一个元组。这很好:您只需使用[0]
访问它的第一个元素,就像访问任何其他元组一样。不需要任何额外的循环。我不知道你为什么认为它脏。但有一点是:您说您将该方法视为一个元组,但这显然是不对的:该方法返回一个元组。这很好:您只需使用[0]
访问它的第一个元素,就像访问任何其他元组一样。不需要任何额外的循环。您知道sqlite可以正确地进行一些计算(通常人们用python进行计算,但您可以直接对sqlite查询进行计算),您知道sqlite可以正确地进行一些计算(通常人们用python进行计算,但您可以直接对sqlite查询进行计算)