/
Ulyanoff
/
mlops2
Обзор
Документация
Войти
/
Ulyanoff
/
mlops2
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/database/tables.py
42 строки
2 KB
Artem Ivochkin
повышение надежности добавления юзера, усложнение обработчика исключений и тестов
02 дек 2025, 16:21
02 дек 2025, 16:21
d19aff9
Код
Авторство
О чём код?
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): """Описание таблицы для Пользователей""" __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, unique=True) psw: Mapped[str] = mapped_column(String(256), nullable=False) avatar: Mapped[Optional[bytes]] = mapped_column(LargeBinary, nullable=True) 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() # служебный объект метаданных для описания таблиц # описание таблицы для Пользователей 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) )