Подключить SQLModel#

Установите плагин и асинхронный драйвер выбранной базы. Для SQLite:

uv add "eazy-sdk-core[sqlmodel]"

open_workspace(...) создаёт область операций над аккаунтами, сессиями, подтверждениями, связями и событиями:

        # examples/docs/integration_sqlmodel.py
        async with open_workspace(engine) as workspace:
            account = await workspace.accounts.create(
                "ada@mail.example",
                provider="mail",
                profile={"display_name": "Ada"},
            )
Файл целиком
"""Persist one account in an in-memory SQLite workspace."""

from __future__ import annotations

import asyncio

from sqlalchemy.ext.asyncio import create_async_engine

from eazy_sdk_sqlmodel import open_workspace


async def main() -> None:
    engine = create_async_engine("sqlite+aiosqlite:///:memory:")
    try:
        # docs:integration-sqlmodel:start
        # examples/docs/integration_sqlmodel.py
        async with open_workspace(engine) as workspace:
            account = await workspace.accounts.create(
                "ada@mail.example",
                provider="mail",
                profile={"display_name": "Ada"},
            )
        # docs:integration-sqlmodel:end
    finally:
        await engine.dispose()
    print(f"stored: {account.identifier}")


if __name__ == "__main__":
    asyncio.run(main())
stored: ada@mail.example

В примере используется временная SQLite. Для постоянной базы сначала вызовите create_all(engine). Учётные данные, профиль и данные сессии сохраняются как JSON, поэтому защиту данных на диске должно обеспечить приложение.

create_all(...) предназначен для новой базы. Для обновления старой схемы сначала запустите eazy-sdk-sqlmodel-migrate DATABASE_URL без --apply, изучите отчёт, затем повторите команду с --apply.

Дальше#