контекстный менеджер делает commit но не закрывает базу. То есть ты должен закрывать соединение самостоятельно close().
https://docs.python.org/3/library/sqlite3.html#sql...
например
import sqlite3
con = sqlite3.connect("tutorial.db")
cur = con.cursor()
cur.execute("CREATE TABLE movie(title, year, score)")
cur.execute("""
INSERT INTO movie VALUES
('Monty Python and the Holy Grail', 1975, 8.2),
('And Now for Something Completely Different', 1971, 7.5)
""")
#con.commit()
print(cur.execute("SELECT * FROM movie").fetchall())
insert открывает транзакцию, которая должна быть подтверждена commit (запусти сначала так), а потом раскоментируй и тогда в базу все запишется.
выводит он то что не закомиченно, потому что объект содержит информацию. Еще раз контекстный менеджер делает commit но не закрывает соединение. В доках об этом прямо сказано.
То есть у тебя только один commit (не явный посредством контекстного менеджера коммитит все что в теле контекстного менеджера) и два insert (второй то вне тела контекстного менеджера), соответственно последний insert не записывается в базу.
Ну и это к твоему вопросу не относится, тут каждый раз об этом говорят, правильно вставляй значения в таблицу без форматирования строк.