SQL函数输出为列表-Python
我有一个查询数据并返回输出的函数SQL函数输出为列表-Python,python,Python,我有一个查询数据并返回输出的函数 import sqlite3 def viewdata(number): conn = sqlite3.connect("alpha.db") cursor = conn.cursor() cursor.execute(("SELECT Alpha,beta,gamma, number FROM alphanum WHERE number=?"),(number,)) data=cursor.fetchall() conn
import sqlite3
def viewdata(number):
conn = sqlite3.connect("alpha.db")
cursor = conn.cursor()
cursor.execute(("SELECT Alpha,beta,gamma, number FROM alphanum WHERE number=?"),(number,))
data=cursor.fetchall()
conn.close()
return data
我想把这些值存储在一个列表中,这样Alpha成为列表中的第一个值,beta成为第二个值,gamma是第三个值,所以我这样做了
import sqlite3
def viewdata(number):
data=[]
conn = sqlite3.connect("alpha.db")
cursor = conn.cursor()
cursor.execute(("SELECT Alpha,beta,gamma, number FROM alphanum WHERE number=?"),(number,))
data.append(cursor.fetchall())
conn.close()
return data
它没有按预期工作,如果我使用此函数并尝试获取[1]值,它会抛出索引超出范围错误。我怎样才能让它工作呢?问题不在于列表,而在于嵌套的元组
你有点像
data = [(('f00', 1, 'bla'), (...))]
因此,您无法执行数据[1]
不要使用.append()
,而是使用
data = cursor.fetchall()
不要初始化它(
data=[]
),这是没有必要的。我用过这样的列表理解
def viewdata(number):
import sqlite3
conn = sqlite3.connect("alpha.db")
cursor = conn.cursor()
cursor.execute(("SELECT Alpha,beta,gamma, number FROM alphanum WHERE number=?"),(number,))
data=[i for i in cursor.fetchall()]
conn.close()
return data
在访问我这样使用的数据时
viewdata(2)[0][0]
这就是我的第一个代码question@Python_newbie恐怕你没有道理。为什么你认为这个列表会影响里面的值的顺序:?请看清楚我的问题中的第一个代码是你给出的here@Python_newbie您的问题描述没有意义。Alpha、Beta等的顺序与
list
vstuple
无关,与您得到的错误无关。。这是三件不同的事情。