New GitHub issue #94028 from coleifer:<br>
<hr>
<pre>
**Bug report**
This was reported to me on https://github.com/coleifer/peewee/issues/2580 and, as I've managed to reproduce the issue, was asked by @erlend-aasland to submit a ticket here. Note that this issue does **not** manifest on other versions of Python (2.7, 3.6, 3.9 and 3.10) -- it appears to be a new issue on 3.11.0b3
Reproduce:
```python
import glob
import os
import sqlite3
filename = '/tmp/test.db'
for f in glob.glob(filename + '*'):
os.unlink(f) # Cleanup anything from prev run(s).
CURSORS = {}
def sql(conn, sql, *params):
curs = conn.cursor()
curs.execute(sql, params)
CURSORS[id(sql)] = curs # COMMENT THIS OUT AND TEST WILL PASS.
return curs
# Set up database w/some sample rows. Peewee sets isolation-level to None as we
# want to manage all transaction state ourselves, rather than use sqlite3's
# somewhat unusual semantics.
db = sqlite3.connect(filename, isolation_level=None)
db.execute('create table users (id integer not null primary key, '
'username text not null)')
sql(db, 'insert into users (username) values (?), (?), (?)', 'u1', 'u2', 'u3')
db.commit()
# On 2nd connection verify rows are visible, then delete them.
new_db2 = sqlite3.connect(filename, isolation_level=None)
assert sql(new_db2, 'select count(*) from users').fetchone()[0] == 3
assert sql(new_db2, 'delete from users').rowcount == 3
# Back in original connection, create 2 new users.
sql(db, 'begin')
sql(db, 'insert into users (username) values (?)', 'u4')
sql(db, 'insert into users (username) values (?)', 'u5')
# 2nd connection cannot see uncommitted changes.
# NOTE: this is the line that fails.
assert sql(new_db2, 'select count(*) from users').fetchone()[0] == 0
# Original conn can see its own changes.
assert sql(db, 'select count(*) from users').fetchone()[0] == 2
db.commit()
# Now the 2nd conn can see the changes.
assert sql(new_db2, 'select count(*) from users').fetchone()[0] == 2
```
On 3.11.0b3 the above fails on the indicated line with the following exception:
```
Traceback (most recent call last):
File "/home/charles/tmp/py311/repro.py", line 40, in <module>
assert sql(new_db2, 'select count(*) from users').fetchone()[0] == 0
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^
TypeError: 'NoneType' object is not subscriptable
```
**Your environment**
- CPython versions tested on: 2.7, 3.6, 3.9, 3.10 (passing), and 3.11.0b3 (**failing**)
- Linux / Debian stable
</pre>
<hr>
<a href="https://github.com/python/cpython/issues/94028">View on GitHub</a>
<p>Labels: type-bug</p>
<p>Assignee: </p>