/
Demek
/
DSam621
Обзор
Документация
Войти
/
Demek
/
DSam621
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
Python/Archaeology/models.py
61 строка
3 KB
d_e_m_e_k
еще один заход на анализ и загрузку данных из excel по керамике в БД
10 авг 2026, 13:33
10 авг 2026, 13:33
b15832f
Код
Авторство
О чём код?
# models.py from sqlalchemy import create_engine, Column, Integer, String, Float, DateTime, Text, JSON, ForeignKey from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import relationship from datetime import datetime from config import Config Base = declarative_base() class CeramicTemplate(Base): __tablename__ = 'ceramic_templates' id = Column(Integer, primary_key=True) file_name = Column(String(255), nullable=False) sheet_name = Column(String(255), nullable=False) block_name = Column(String(500)) # Название блока из первой строки template_type = Column(String(100)) # Тип шаблона (лепная, раннекруговая, и т.д.) row_index = Column(Integer) # Индекс строки начала шаблона # Данные шаблона в JSON формате template_data = Column(JSON) created_at = Column(DateTime, default=datetime.utcnow) updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) # Отношение к находкам finds = relationship("CeramicFind", back_populates="template", cascade="all, delete-orphan") class CeramicFind(Base): __tablename__ = 'ceramic_finds' id = Column(Integer, primary_key=True) template_id = Column(Integer, ForeignKey('ceramic_templates.id')) # Связь с шаблоном category = Column(String(100)) # Категория (лепная, раннекруговая и т.д.) subcategory = Column(String(200)) # Подкатегория (красно-гл с дресвой и т.д.) # Основные показатели thin_walls = Column(Integer, default=0) thick_walls = Column(Integer, default=0) simple_rims = Column(Integer, default=0) profiled_rims = Column(Integer, default=0) bottoms = Column(Integer, default=0) total_count = Column(Integer, default=0) total_weight = Column(Float, default=0.0) # Орнаменты linear_ornament = Column(Integer, default=0) wave_zigzag = Column(Integer, default=0) nail_ornament = Column(Integer, default=0) rope_ornament = Column(Integer, default=0) stamp_ornament = Column(Integer, default=0) combined_ornament = Column(Integer, default=0) total_ornamented = Column(Integer, default=0) # Дополнительные поля для разных типов керамики (в JSON) extra_fields = Column(JSON) created_at = Column(DateTime, default=datetime.utcnow) # Отношение к шаблону template = relationship("CeramicTemplate", back_populates="finds")