在APSW中提取所有数据

1 投票
1 回答
764 浏览
提问于 2025-04-16 17:07

你知道APSW没有“fetchall”这个方法。我们只能使用.next()这个方法。那么,我该怎么把执行一个选择查询的结果放到一个列表里呢?

1 个回答

1

apsw的3.6.22版本让我可以用 cursor.fetchall() 来一次性获取所有行,并把它们放进一个列表里:

import apsw

conn = apsw.Connection(':memory:')
curs = conn.cursor()
curs.execute("CREATE TABLE foo (id INTEGER, name VARCHAR(255))")
curs.executemany("INSERT INTO foo VALUES (?, ?)", [(1, 'bar'),(2, 'baz')])
print curs.execute("SELECT * FROM foo").fetchall()

[(1, u'bar'), (2, u'baz')]

如果你的版本不支持这个功能,但支持 .next(),那么你可以把游标包裹在一个列表里(通过遍历游标)。这样也能实现这个功能,对我来说是有效的:

curs.execute("SELECT * FROM foo")
print list(curs)

[(1, u'bar'), (2, u'baz')]

撰写回答