[issue46261] [doc] fix inaccuracies in sqlite3.Cursor.lastrowid docs
Erlend E. Aasland
report at bugs.python.org
Tue Jan 4 16:46:55 EST 2022
New submission from Erlend E. Aasland <erlend.aasland at innova.no>:
The sqlite3 docs say that lastrowid is set to None after executemany(), or after execute()'ing statements that are not INSERTs or REPLACEs. This is not true; in those cases, lastrowid is preserved. lastrowid is only None in a pristine cursor. Suggesting to reword the docs so they harmonise with the implementation.
Note, there is a quirk, or bug with lastrowid: it is set to 0 if the first statement that's execute()d on a cursor is a non-INSERT/REPLACE statement. For example:
>>> import sqlite3
>>> cx = sqlite3.connect(":memory:")
>>> cu = cx.cursor()
>>> cu.lastrowid
>>> cu.execute("select 1")
>>> cu.lastrowid
0
This behaviour is consistent across current main through 3.7 (though in 2.7, the behaviour is consistent with the docs, so it probably changed a long time ago). I'm not sure it's worth noting this side effect in the docs though.
----------
assignee: docs at python
components: Documentation
messages: 409713
nosy: docs at python, erlendaasland, lemburg
priority: normal
severity: normal
status: open
title: [doc] fix inaccuracies in sqlite3.Cursor.lastrowid docs
versions: Python 3.10, Python 3.11, Python 3.9
_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue46261>
_______________________________________
More information about the Python-bugs-list
mailing list