将sqlite3记录转换为列表

时间:2018-10-09 05:24:32

标签: python list sqlite tuples

我尝试使用以下代码将sqlite3记录转换为列表,但结果以这种方式输出

[[1000], [1199], [1400], [1213], [1500], [1800], [1308]]

使用以下代码,但我希望结果显示为:

[1000, 1199, 1400, 1213, 1500, 1800, 1308]

list的数字中删除list

conn = sqlite3.connect("TEST1.db")
cur = conn.cursor()
cur.execute("SELECT POINT FROM loyalty")
rows = cur.fetchall()

result = [list(i) for i in rows]

print(result)

我试图用这种方式遍历结果

for row in rows:
    print(list(row))

它以这种方式输出

[1000]
[1199]
[1400]
[1213]
[1500]
[1800]
[1308]

2 个答案:

答案 0 :(得分:0)

每行fetchall返回的都是一个元组,其中SELECT中的每个属性都相应地建立了索引,所以:

result = [i[0] for i in rows]

i[0]将是POINT列。

或尝试使用迭代器形式:

for row in c.execute('SELECT POINT FROM loyalty'):
        print(row[0])

答案 1 :(得分:0)

可以通过多种方式获得预期结果。

即使子列表的长度是奇数,以下方法也可以使用

行= [[1000],[1199],[1400],[1213],[1500],[1800],[1308]]

最简单的方法

endResult = []
for item in rows:
    for subItem in item:
        endResult.append(subItem)
print(endResult)

输出:[1000、1199、1400、1213、1500、1800、1308]

另一种解决方法

import itertools
rows = [[1,2,3],[4,5,6], [7], [8,9]]
endResult = list(itertools.chain.from_iterable(rows))
print(endResult)

输出:[1、2、3、4、5、6、7、8、9]

使用列表属性(总和)之一

endResult = sum(rows, [])
print(endResult)

输出:[1、2、3、4、5、6、7、8、9]

使用Lambda表达式

endResult = reduce(lambda x,y: x+y,rows)
print(endResult)

输出:[1、2、3、4、5、6、7、8、9]