База данных - VK-SDK-DEV/VK-SDK GitHub Wiki
VK-SDK предоставляет иструменты для быстрого развертывания базы данных sqlite с автоматическими миграциями.
Объявление структур
Структуры представляют собой таблицы в базе данных. Пример структуры:
class User(Struct):
user_id = ""
balance = 0
save_by = "user_id"
Обычно структуры лежат в папке Structs/
. Однако, куда их положить - ваш выбор.
save_by
- ключ, по которому будет производиться сохранение и получение структуры, также может быть и списком из ключей, например:
class Order(Struct):
user_id = ""
order_id = ""
save_by = ["user_id", "order_id"]
или
class Cart(Struct):
user_id = ""
product_name = ""
count = 0
save_by = ["user_id", "product_name"]
Обратите внимание, что все структуры должны наследоваться от класса Struct
Опционально к структуре можно добавить поле table_name
для явного задания имени таблицы.
Обычно имена таблиц преобразуются в змеиный_кейс (все буквы с маленькой буквы, пробелы меняется на "_")
Создание и получение записей
Чтобы получить структуру, нужно в одном из методов получения структур передпть все параметры, указанные структурой как save_by
Экземпляр основной базы данных находится в self.db
в классе бота.
Способы получения структур:
self.db.select_one_struct("строка с sql", ["параметры"])
- получение одной структуры по SQL-like строкеself.db.select_all_structs("строка с sql", ["параметры"])
- получение всех структур по SQL-like строкеStruct(save_by1 = "", create_new=False)
- (пример,User(user_id=self.user.id, create_new=False)
) - получение структуры без SQL строкиStruct.select_all(save_by1 = "", create_new=False)
- (пример,User.select_all(balance=0, create_new=False)
) - получение всех структур без SQL строки
Обратите внимание, что если позиционный аргумент create_new не указан или равен True, будет создаваться новая запись о структуре с параметрами, переданными в конструктор структуры.
Также возможны прямые коммуникации с дб через методы:
- select_one(query, args) - выбор одной записи
- select(query, args) - выбор всех записей
- execute(query, args) - выполнение операции с дб. Не дает результата.