Перейти к содержанию

Подключение к базе данных

Для работы с базой данных нам нужно подключить наши описания таблиц к файлу.

Базу данных необязательно подключать к файлу

Вместо пути к файлу можно указать :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()

Метод, который создаёт таблицу в базе данных, следуя описанию. (Таблица создаётся в том случае, если не была создана ранее)