Сообщить об ошибке.

Функция connect() модуля sqlite3 в Python

Открыть соединение с файлом базы данных SQLite

Синтаксис:

import sqlite3

sqlite3.connect(database, timeout, detect_types, isolation_level, 
                check_same_thread, factory, cached_statements, uri, *,
                autocommit=sqlite3.LEGACY_TRANSACTION_CONTROL)

Параметры:

  • database - путь к файлу с базой данных,
  • timeout - тайм-аут блокировки базы при изменении,
  • detect_types - обнаружения типов,
  • isolation_level - уровень изоляции,
  • check_same_thread - использование нескольких потоков,
  • factory - пользовательский класс Connection,
  • cached_statements - кэширование инструкций,
  • uri - интерпретировать подключение как URI.
  • autocommit - управляет поведением обработки транзакций (добавлен в Python 3.12).

Возвращаемое значение:

Описание:

Функция connect() модуля sqlite3 открывает соединение с файлом базы данных SQLite database. По умолчанию возвращает объект Connection, если не указана пользовательская фабрика.

Аргумент database - это строка, представляющая путь или объект, похожий на путь, который задает абсолютный или относительный путь к текущему рабочему каталогу открываемого файла базы данных. Можно использовать строку ':memory:', чтобы открыть соединение с базой данных, которая будет находится в оперативной памяти, а не на диске.

Когда доступ к базе данных осуществляется несколькими подключениями и один из процессов изменяет базу данных, то база данных SQLite блокируется, пока эта транзакция не будет зафиксирована. Аргумент timeout указывает, как долго соединение должно ожидать, пока блокировка не исчезнет, ​​до возникновения исключения. Значение по умолчанию для параметра времени ожидания - 5,0 (пять секунд).

Аргумент isolation_level уровень изоляции подробно разобран в разделе "Управление транзакциями...", а так же описан в свойстве isolation_level объекта Connection.

SQLite изначально поддерживает только типы TEXT, INTEGER, REAL, BLOB и NULL. Если необходимо использовать другие типы, то нужно сами добавить их поддержку. Аргумент detect_types и использование пользовательских конвертеров, зарегистрированных с помощью функции sqlite3.register_converter(), позволяют сделать это легко.

Аргумент detect_types по умолчанию имеет значение 0, т. е. выключено, нет обнаружения типов. чтобы включить обнаружение типов, то установите его в любую комбинацию sqlite3.PARSE_DECLTYPE и sqlite3.PARSE_COLNAMES.

По умолчанию аргумент check_same_thread имеет значение True и только создавая поток может использовать это подключение. Если установлено значение False, то возвращаемое соединение может быть общим для нескольких потоков. При использовании нескольких потоков с одним и тем же соединением операции записи должны быть сериализованы пользователем, чтобы избежать повреждения данных.

По умолчанию модуль sqlite3 использует свой класс Connection для вызова соединения. Однако можно создать подкласс класса Connection и сделать так, чтобы функция sqlite3.connect() использовала пользовательский класс, предоставив свой класс для аргумента factory.

За подробностями обращайтесь к разделу «Типы SQLite и Python» данного руководства.

Модуль sqlite3 внутренне использует кэш инструкций, чтобы избежать накладных расходов на синтаксический анализ SQL. Если необходимо явно указать количество операторов, которые должны кешироваться для соединения, то можно установить аргумент cached_statements. В настоящее время реализованным значением по умолчанию является кэширование 100 операторов.

Если аргумент uri имеет значение True, то база данных интерпретируется как URI. Это позволяет указать параметры, например чтобы открыть базу данных в режиме только для чтения, вы можете использовать:

Новое в версии 3.12: добавлен аргумент autocommit.

Аргумент autocommit управляет поведением обработки транзакций PEP 249. Дополнительные сведения смотрите в разделе "Управление транзакциями...". В настоящее время autocommit по умолчанию имеет значение sqlite3.LEGACY_TRANSACTION_CONTROL. В будущем выпуске Python 3.13 значение по умолчанию изменится на False.

db = sqlite3.connect('file:path/to/database?mode=ro', uri=True)

Дополнительные сведения об этой функции, в том числе список распознанных параметров, можно найти в документации по SQLite URI.

Вызывает событие аудита sqlite3.connect с параметром database.

Новое в Python 3.10: функция вызывает событие аудита sqlite3.connect/handle.

Вызывает событие аудита sqlite3.connect/handle с аргументом connection_handle.

Примеры:

Больше примеров смотрите в разделе "Эффективное использование sqlite3 в Python".

import sqlite3
con = sqlite3.connect('example.db')
cur = con.cursor()

# или

con = sqlite3.connect(":memory:")
con.isolation_level = None
cur = con.cursor()