/
bomjkee
/
HackathonMiniApp
Обзор
Документация
Войти
/
bomjkee
/
HackathonMiniApp
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
app/db/database.py
52 строки
2 KB
bomjkee
new updates
22 фев 2025, 22:40
22 фев 2025, 22:40
e967894
Код
Авторство
О чём код?
import uuid from datetime import datetime from decimal import Decimal from sqlalchemy import func, TIMESTAMP, Integer, inspect from sqlalchemy.orm import DeclarativeBase, declared_attr, mapped_column, Mapped from sqlalchemy.ext.asyncio import create_async_engine, async_sessionmaker, AsyncAttrs, AsyncSession from config import db_url engine = create_async_engine(url=db_url) async_session_maker = async_sessionmaker(engine, class_=AsyncSession) class Base(AsyncAttrs, DeclarativeBase): __abstract__ = True id: Mapped[int] = mapped_column(Integer, primary_key=True) created_at: Mapped[datetime] = mapped_column( TIMESTAMP, server_default=func.now() ) updated_at: Mapped[datetime] = mapped_column( TIMESTAMP, server_default=func.now(), onupdate=func.now() ) @declared_attr def __tablename__(cls) -> str: return cls.__name__.lower() + 's' def to_dict(self, exclude_none: bool = False): #exclude_none (bool): Исключать ли None значения из результата result = {} for column in inspect(self.__class__).columns: value = getattr(self, column.key) if isinstance(value, datetime): value = int(value.timestamp()) elif isinstance(value, Decimal): value = float(value) elif isinstance(value, uuid.UUID): value = str(value) if not exclude_none or value is not None: result[column.key] = value return result