/
Ulyanoff
/
mlops1
Обзор
Документация
Войти
/
Ulyanoff
/
mlops1
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/database/tables.py
44 строки
2 KB
Artem Ivochkin
todo со ссылками на модуль с кодом
11 янв 2026, 18:45
11 янв 2026, 18:45
3ad959e
Код
Авторство
О чём код?
from datetime import datetime, timezone from typing import Optional from sqlalchemy import Column, Integer, String, DateTime, MetaData, Table, LargeBinary from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column # описания для работы через сессии alchemy, уровень объектно-реляционного отображения (ORM) --------------------------- class DBase(DeclarativeBase): """Служебный мета-класс родитель для последующего описания таблиц.""" pass class Users(DBase): """Описание таблицы для Пользователей (уровень orm)""" __tablename__ = 'users' id: Mapped[int] = mapped_column(primary_key=True) name: Mapped[str] = mapped_column(String(128), nullable=False) email: Mapped[str] = mapped_column(String(128), nullable=False) psw: Mapped[str] = mapped_column(String(256), nullable=False) avatar: Mapped[Optional[bytes]] = mapped_column(LargeBinary, nullable=True) # todo надо ли выставлять время записи в базу прямо в модели ? time: Mapped[datetime] = mapped_column(default=lambda: datetime.now(timezone.utc).replace(tzinfo=None), nullable=False) def __repr__(self): return f"User(id={self.id}, name={self.name})" # описания для работы через коннекты alchemy, уровень ядра (core) ----------------------------------------------------- #: служебный объект метаданных для описания таблиц meta = MetaData() #: описание таблицы для Пользователей на уровне Core users = Table('users', meta, Column('id', Integer(), primary_key=True), Column('name', String(128), nullable=False), Column('email', String(128), nullable=False), Column('psw', String(256), nullable=False), Column('avatar', LargeBinary, nullable=True), Column('time', DateTime, nullable=False) )