from sqlalchemy import create_engine, Column, Integer, String, ForeignKey, DateTime, Table, MetaData,Text from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import relationship, sessionmaker Base = declarative_base() metadata = MetaData() class File(Base): __tablename__ = 'kownledge_file' id = Column(Integer, primary_key=True) file_identifier = Column(String(50), unique=True, nullable=False, comment='文件唯一标识符') file_path = Column(String(255), nullable=False, comment='文件存储路径') file_name = Column(String(255), nullable=False, comment='文件名字') is_deleted = Column(Integer, default=0, comment='是否删除') # 一个文件通过知识库的base_code来关联 knowledge_base_code = Column(String(50), ForeignKey('knowledge_base.base_code'), nullable=False) knowledge_base = relationship("KnowledgeBase", back_populates="files") class KnowledgeBase(Base): __tablename__ = 'knowledge_base' # 知识库表主键 base_id = Column(Integer, primary_key=True) # 知识库的基础编码 base_code = Column(String(50),unique=True, comment='知识库的基础编码') # 主题词 theme_word = Column(String(100), comment='主题词') # 事件类型 event_type = Column(String(100), comment='事件类型') # 来源单位 source_unit = Column(String(100), comment='来源单位') # 发布日期 publish_date = Column(DateTime, comment='发布日期') # 知识类型 knowledge_type = Column(String(100), comment='知识类型') # 摘要 abstract = Column(Text, comment='摘要') # 报告名称 report_name = Column(String(255), comment='报告名称') files = relationship("File", order_by=File.id, back_populates="knowledge_base")