все Python 3sqlite3понятие
sqlite3.Connection
соединение и запросы
Открытая база SQLite: выполняет запросы, управляет транзакциями (commit, rollback) и закрывается close(). Создаётся функцией sqlite3.connect().
Синтаксис
conn = sqlite3.connect(':memory:'); with conn: conn.execute(sql, params)
По умолчанию изменения живут в открытой транзакции и пропадают, если не вызвать commit(). Блок with conn: сам делает commit при успехе и rollback при исключении, но соединение НЕ закрывает — close() всё равно нужен (или contextlib.closing). conn.execute() — сокращение: он создаёт курсор и возвращает его. Атрибут row_factory = sqlite3.Row включает доступ к столбцам по имени.
Примеры
import sqlite3
conn = sqlite3.connect(':memory:')
conn.execute('CREATE TABLE t(x)')
with conn:
conn.execute('INSERT INTO t VALUES (1)') # commit при выходе
try:
with conn:
conn.execute('INSERT INTO t VALUES (2)')
raise ValueError('сбой')
except ValueError:
pass
print(conn.execute('SELECT count(*) FROM t').fetchone()[0]) # → 1 — вторая вставка откатилась
print(conn.execute('SELECT 42').fetchone()) # → (42,) — после with соединение открыто
conn.close()
import sqlite3
conn = sqlite3.connect(':memory:')
conn.close()
try:
conn.execute('SELECT 1')
except sqlite3.ProgrammingError as e:
print(e) # → Cannot operate on a closed database.
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности