我有一个查询数据并返回输出的函数
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]值,它会抛出索引超出范围错误。我怎样才能让这个工作
答案 0 :(得分:0)
问题不在于列表,而在于嵌套元组。
你有类似
的东西data = [(('f00', 1, 'bla'), (...))]
所以你不能data[1]
。
而不是.append()
,请使用
data = cursor.fetchall()
并且不初始化它(data = []
),没有必要这样做。
答案 1 :(得分:0)
我已经使用了这样的列表理解
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]