На этом шаге мы рассмотрим средства для выполнения указанных операций.
Для создания и открытия базы данных служит функция connect(). Функция имеет следующий формат:
connect( database[, timeout][, isolation_level][, detect_types] [, factory] [, check_same_thread] [, cached_statements] [, uri = False] )
В параметре database указывается абсолютный или относительный путь к базе данных. Если база данных не существует, то она будет создана и открыта для работы. Если база данных уже существует, то она просто открывается без удаления имеющихся данных. Вместо пути к базе данных можно указать значение :memory:, которое означает, что база данных будет создана в оперативной памяти, - после закрытия такой базы все данные будут удалены.
Все остальные параметры не являются обязательными и могут быть указаны в произвольном порядке путем присвоения значения названию параметра. Так, параметр timeout задает время ожидания снятия блокировки с открываемой базы данных (по умолчанию - пять секунд). Предназначение остальных параметров мы рассмотрим позже.
Функция connect() возвращает объект соединения, с помощью которого осуществляется вся дальнейшая работа с базой данных. Если открыть базу данных не удалось, то возбуждается исключение. Соединение закрывается, когда вызывается метод close() объекта соединения. В качестве примера откроем и сразу закроем базу данных testdb.db, расположенную в каталоге book на диске C:\:
>>> import sqlite3 # Подключаем модуль sqlite3 >>> con = sqlite3.connect ("C:\\book\\testdb.db") # Открываем базу данных >>> # Работаем с базой данных >>> con.close () # Закрываем базу данных
Поддержка необязательного параметра uri появилась в Python 3.4. Если его значение равно True, путь к базе данных должен быть указан в виде интернет-адреса формата fiie:///<Путь к файлу>. В этом случае можно задать дополнительные параметры соединения с базой, перечислив их в конце интернет-адреса в виде пар <Имя параметра>=<Значение параметра> и отделив от собственно пути символом ?, а друг от друга - символом &. Наиболее интересные для нас параметры таковы:
Примеры доступа к базе данных по интернет-адресу:
>>> import sqlite3 >>> # Доступ к базе, хранящейся в файле c:\book\testdb.db >>> con = sqlite3.connect(r"file:///C:/book/testdb.db", uri = True) >>> con.close() >>> # Доступ только для чтения >>> con = sqlite3.connect(r"file:///C:/book/testdb.db?mode=ro", uri = True) >>> con.close() >>> # Доступ к неизменяемой базе данных >>> con = sqlite3.connect(r"file:///f:/data.db?immutable=1", uri = True) >>> con.close()
На следующем шаге мы рассмотрим выполнение запросов.