Python по умолчанию поддерживает работу с базой данных SQLite. Для этого применяется встроенная библиотека sqlite3, которая в python доступна в виде одноименного модуля.
Для подключения к бд в этой библиотеке определена функция connect():
|
1
|
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", которая располагается в той же папке, что и текущий скрипт (если такая база данных отсутствует, то она автоматически создается):
|
1
2
3
|
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:
|
1
2
3
4
5
|
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:
|
1
2
3
4
5
6
7
8
9
10
11
|
import sqlite3;con = sqlite3.connect("metanit.db")cursor = con.cursor()# создаем таблицу peoplecursor.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 и увидеть созданную таблицу

Автор: Евгений Морковин




0 комментариев
Оставьте комментарий
Комментарии