Python Glossary English

все 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Сообщить о неточности