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
vs
tuple
无关,与您得到的错误无关。。这是三件不同的事情。