SQL函数输出列表 - Python

时间:2018-05-18 11:19:22

标签: 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.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]值,它会抛出索引超出范围错误。我怎样才能让这个工作

2 个答案:

答案 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]