不能将sqlite查询放入单独的列表python中

时间:2017-01-07 16:49:30

标签: python list sqlite

我有sqlite,我从表中查询两列:

result_set = conn.execute("SELECT time, MeanCurrent from MEASUREMENTS")

然后,我想把每一栏放到一个单独的列表中,我到目前为止所做的是:

list1 = [record[0] for record in result_set]
list2 = [record[1] for record in result_set]

问题是,当list1完美地打印第一列时,list2显示为空,而如果我删除第一行,list2也会完美地打印第二列!

所以,在执行第一行之后,我的查询中发生了一些变化,但我不知道是什么。

有什么方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:3)

conn.execute()返回一个游标对象。你不能多次迭代一个游标;当你到达终点时,它会在第二次迭代时再次从头开始。首先将所有行加载到列表中,或者使用仅需要迭代一次的其他技术。

我使用zip() function配对列:

list1, list2 = zip(*result_set)

但您可以先使用results = list(result_set)results = result_set.fetchall()将所有行显示为列表,也可以使用使用list1.append()list2.append()的单个循环添加列值到两个列表。