Подключение к базе данных¶
Для работы с базой данных нам нужно подключить наши описания таблиц к файлу.
Базу данных необязательно подключать к файлу
Вместо пути к файлу можно указать :memory:
,
тогда база данных будет храниться в оперативной памяти.
(В примерах мы будем использовать это)
Работа с описанием таблицы¶
Немного отступим от темы раздела и наведём порядок.
Представим, что мы работаем над реальным проектом,
поэтому, как это принято, будем разбивать наш проект на файлы.
Создадим файл data_base.py
и запишем туда наше описание таблицы Points
.
В итоге у нас должен получиться файл с таким содержанием:
from sqlite3_api.field_types import CustomType
from sqlite3_api import Table
class Position(CustomType):
def __init__(self, x: float, y: float):
self.x = x
self.y = y
@staticmethod
def adapter(obj) -> bytes:
return ('%f;%f' % (obj.x, obj.y)).encode('ascii')
def converter(self, obj: bytes):
return Position(*map(float, obj.split(b";")))
def __repr__(self):
return f'{self.x};{self.y}'
class Points(Table):
position: Position
color: str = 'black'
size: int = 1
Теперь, в каком файле нам бы ни понадобилась работа с базой данных, мы просто будем импортировать описание таблицы и через него взаимодействовать с базой.
Подключение¶
Подключение описания таблицы к файлу может проходить в одну строку кода.
from data_base import Points
points = Points(db_path='DataBase.sqlite3')
Объект points
и является соединением
описания таблицы Points
и базы данных.
В дальнейшем мы просто будем вызывать различные методы у этого объекта.
Создание таблицы¶
Соединение мы создали, но таблица по-прежнему не создана в базе данных!
Давайте это исправим, а за одно и познакомимся с первым методом объекта points
.
from data_base import Points
points = Points(db_path=':memory:')
points.create_table()
Обратите внимание
Здесь мы, вместо пути к файлу, указали оперативную память.
Метод create_table()¶
Метод, который создаёт таблицу в базе данных, следуя описанию. (Таблица создаётся в том случае, если не была создана ранее)