When using sqlite3 with the Turkish locale, cursor.lastrowid is not accessible after an insert statement if "INSERT" is upper case.
I believe that the cause is that the detect_statement_kind function [1] calls the locale-dependent C function tolower(). The Turkish locale specifies a different case mapping for I (to a dotless lowercase i: ı), so it's not recognised as an insert statement, which looks like it will cause the transaction to be committed immediately.
See also the discussion on issue 1813 [2], and a Redhat bug with a test case for this [3].
[1] http://hg.python.org/cpython/file/c4b6d9312da1/Modules/_sqlite/cursor.c#l41
[2] http://bugs.python.org/issue1813
[3] https://bugzilla.redhat.com/show_bug.cgi?id=720209 |