【发布时间】:2018-10-09 00:24:44
【问题描述】:
board balls win1 win2 result
----- ----- ---- ---- ------
1 1 0 0 1
4 1 0 0 1
1024 1 0 0 1
当我们从一个表中只选择一行但多列时,例如,通过使用:
connection = sqlite3.connect("spline.db")
crsr = connection.cursor()
crsr.execute("SELECT board FROM positions WHERE balls = 1")
result = crsr.fetchall()
print result
connection.close()
结果是一个元组列表:
[(1,), (4,), (1024,)]
有没有办法直接获取整数列表?一种方法是:
print [result[i][0] for i in range(len(result))]
而不是:
print result
但是当结果集中有多达 107 行时,我们无法想象像这样迭代变量 i,然后从中生成一个整数列表。所以,我想知道是否有其他可用的替代解决方案,无论哪种方式都足够直接有效。
【问题讨论】:
-
你想对结果做什么?为什么需要
fetchall()? -
我正在使用 Python 解决一个名为 Spline 的策略游戏。有多达 107529339 个不同的可能棋盘位置可用,对于每个棋盘位置,我将与其相关的数据存储在 SQLite3 数据库中,以便快速检索棋盘位置是第一个玩家还是第二个玩家获胜。棋盘位置是主键,因此对其进行的任何搜索都会更快。从
crsr的结果集中检索元组列表需要crsr.fetchall()。或者说可以直接从crsr本身的结果集中访问数据项吗?
标签: python list select sqlite tuples