>Possibly the Python documentation is overwhelming here as data can also be
>retrieved with explicit fetch steps.
The APSW documentation is better. The sqlite3 documentation is somewhat
limited.
>>> import sqlite3
>>> db = sqlite3.connect('', isolation_level=None) # isolation_level=None turns
>>> off automagic which does not work anyway
>>> db.execute('create table x(x)')
<sqlite3.Cursor object at 0x000001BE183BEEA0>
.fetchone() returns None if there is no rows, else it returns the row tuple:
>>> print(db.execute('select x from x').fetchone())
None
.fetchall() returns an list of rows (which will be empty if there are no rows):
>>> print(db.execute('select x from x').fetchall())
[]
Calling the iterator step function manually will throw StopIteration if there
are no more rows (that is how "for row in iter(...)" knows to stop iterating --
the for catches the StopIteration exception and stops executing the loop):
>>> print(next(db.execute('select x from x')))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
>>> print(db.execute('select x from x').__next__())
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
APSW works the same way. https://github.com/rogerbinns/apsw
>>> import apsw
>>> db = apsw.Connection('')
>>> db.cursor().execute('create table x(x)')
<apsw.Cursor object at 0x000001BE17D36C30>
>>> print(db.cursor().execute('select x from x').fetchone())
None
>>> print(db.cursor().execute('select x from x').fetchall())
[]
>>> print(next(db.cursor().execute('select x from x')))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
>>> print(db.cursor().execute('select x from x').__next__())
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
--
The fact that there's a Highway to Hell but only a Stairway to Heaven says a
lot about anticipated traffic volume.
_______________________________________________
sqlite-users mailing list
[email protected]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users