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

Хранилище#

Руководство: Хранилище и переводы.

Table #

Table(name: str, cls: type[T], *, key: str, file: str | Path | None = None)

Таблица SQLite с dataclass'ами по ключу: addons/amxpy/data/<плагин>.db.

Запросы идут вне игрового потока — кадр их не ждёт. Записи хранятся как JSON; datetime и date — в ISO-формате.

Параметры#
  • name — имя таблицы.
  • cls — dataclass записей.
  • key — поле-ключ.
  • file — свой файл базы вместо data/<плагин>.db.
Пример#
@dataclass
class Vip:
    steam_id: str
    until: datetime

table = Table("vip", Vip, key="steam_id")

@plugin.on(events.Init)
async def setup(e: events.Init) -> None:
    await table.create()

create #

create() -> None

Создать таблицу, если её нет (обычно в events.Init).

get #

get(key: Any) -> T | None

Запись по ключу или None: vip = await table.get(player.steam_id).

put #

put(obj: T) -> None

Сохранить запись (вставить или заменить по ключу).

delete #

delete(key: Any) -> bool

Удалить запись; True — она была.

all #

all() -> list[T]

Все записи таблицы.

close #

close() -> None

Закрыть соединение с базой.