Fetch All in APSW

766 Views Asked by At

You know there isn't any "fetchall" method for APSW. We can only use .next() method. So How can I take the result of an execute command with select query into a list?

1

There are 1 best solutions below

1
samplebias On BEST ANSWER

Version 3.6.22 of apsw let me use cursor.fetchall() to retrieve all rows in a list:

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')]

If your version does not support this, but it supports .next(), can you just wrap the cursor in a list (iterating over the cursor)? This works for me:

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

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