from sqlalchemy import * #导入sqlalchemy全部常用类 from sqlalchemy.orm import declarative_base,sessionmaker #造会话工厂 SessionLocal,管数据库增删改查会话 from datetime import datetime from core.database import Base #保证所有模型共用同一个Base,表才能正常生成 # 为了符合三范式,就业表只保存 student_id,不保存学生姓名和班级名称。查询返回时通过关联 students 和 classes 带出学生姓名、班级名称。 class Employment(Base): __tablename__ = "employment_info_detail" # 映射的真实MySQL数据库表名 id = Column(Integer, primary_key=True # 主键 , autoincrement=True # 开启自增,插入数据不需要手动传id,数据库自动生成id ,comment="就业信息主键id") student_id = Column(Integer, ForeignKey("student_info_detail.id") # 外键 -> students.id , nullable=False # 不允许为null,每一条就业记录必须绑定一个学生 ,comment="关联学生id") employment_status = Column(String(50) , default="not_started" ,comment="就业状态:not_started/job_hunting/offered/employed") employment_open_date = Column(Date ,comment="就业开放时间") offer_date = Column(Date ,comment="offer下发时间") company_name = Column(String(100) , comment="就业公司名称") salary = Column(DECIMAL(10, 2) # 高精度浮点数薪资,最多 10 位数字,小数占 2 位 , comment="就业薪资") remark = Column(String(255) ,default=None , comment="备注信息") created_at = Column(DateTime , default=datetime.now , comment="创建时间") updated_at = Column(DateTime , default=datetime.now , onupdate=datetime.now ,comment="更新时间") is_deleted = Column(SmallInteger ,default=0 ,comment="逻辑删除:0正常,1删除")