SQLite

Подключение к SQLite

Последнее обновление: 14.11.2022

Python по умолчанию поддерживает работу с базой данных SQLite. Для этого применяется встроенная библиотека sqlite3, которая в python доступна в виде одноименного модуля.

Для подключения к бд в этой библиотеке определена функция connect():

sqlite3.connect(database, timeout=5.0, detect_types=0, isolation_level='DEFERRED', check_same_thread=True, factory=sqlite3.Connection, cached_statements=128, uri=False)

Она принимает следующие параметры:

  • database: путь к файлу базы данных. Если база данных расположена в памяти, а не на диске, то для открытия подключения используется ":memory:"

  • timeout: период времени в секундах, через который генерируется исключение, если файл бд занят другим процессом

  • detect_types: управляет сопоставлением типов SQLite с типами Python. Значение 0 отключает сопоставление

  • isolation_level : устанавливает уровень изоляции подключения и определяет процесс отрытия неявных транзакций. Возможные значения: "DEFERRED" (значение по умолчанию), "EXCLUSIVE", "IMMEDIATE" или None (неявные транзакции отключены)

  • check_same_thread: если равно True (значение по умолчанию), то только поток, который создал подключение, может его использовать. Если равно False, подключение может использоваться несколькими потоками.

  • factory: класс фабрики, который применяется для создания подключения. Должен представлять класс, производный от Connection. По умолчанию используется класс sqlite3.Connection

  • cached_statements: количество SQL-инструкций, которые должны кэшироваться. По умолчанию равно 128.

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

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

Например, подключение к базе данных "metanit.db", которая располагается в той же папке, что и текущий скрипт (если такая база данных отсутствует, то она автоматически создается):

import sqlite3;

con = sqlite3.connect("metanit.db")

Сопоставление типов SQLite и Python

Прежде чем начать работать с базой данных, следует понимать, как сопоставляются типы SQLite и типы Python. По умолчанию применяются следующие сопоставления:

Python

SQLite

None

NULL

int

INTEGER

float

REAL

str

TEXT

bytes

BLOB

Следует отметить, что при необходимости мы можем переопределять сопоставление, применяя кастомные конвертеры типов.

Получение курсора

Для выполнения выражений SQL и получения данных из БД, необходимо создать курсор. Для этого у объекта Connection вызывается метод cursor(). Этот метод возвращает объект Cursor:

import sqlite3;
# создаем подключение
con = sqlite3.connect("metanit.db")
# получаем курсор
cursor = con.cursor()

Выполнение запросов к базе данных

Для выполнения запросов и получения данных класс Cursor предоставляет ряд методов:

  • execute(sql, parameters=(), /): выполняет одну SQL-инструкцию. Через второй параметр в код SQL можно передать набор параметров в виде списка или словаря

  • executemany(sql, parameters, /): выполняет параметризованное SQL-инструкцию. Через второй параметр принимает наборы значений, которые передаются в выполняемый код SQL.

  • executescript(sql_script, /): выполняет SQL-скрипт, который может включать множество SQL-инструкций

  • fetchone(): возвращает одну строку в виде кортежа из полученного из БД набора строк

  • fetchmany(size=cursor.arraysize): возвращает набор строк в виде списка. количество возвращаемых строк передается через параметр. Если больше строк нет в наборе, то возвращается пустой список.

  • fetchall(): возвращает все (оставшиеся) строки в виде списка. При отсутствии строк возвращается пустой список.

Создание таблицы

Для создания таблицы в SQLite применяется инструкция CREATE TABLE. Например, создадим в базе данных "metanit.db" таблицу people:

import sqlite3;

con = sqlite3.connect("metanit.db")
cursor = con.cursor()

# создаем таблицу people
cursor.execute("""CREATE TABLE people
                (id INTEGER PRIMARY KEY AUTOINCREMENT,  
                name TEXT, 
                age INTEGER)
            """)

В метод cursor.execute() передается инструкция CREATE TABLE, которая создает таблицу people с тремя столбцами. Столбец id представляет идентификатор пользователя, хранит данные типа Integer, то есть число, и также представляет первичный ключ, значение которого будет автоматически генерироваться и инкрементироваться с каждой новой строкой. Второй столбец - name представляет строку - имя пользователя. И третий столбец - age представляет возраст пользователя.

После выполнения скрипта мы можем открыть базу данных в каком-нибудь браузере баз данных SQLite, например, в DB Browser for SQLite и увидеть созданную таблицу

Создание таблицы в базе данных sqlite в python
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850