diff --git a/models/class_teacher.py b/models/class_teacher.py index 701b9ce..37d1e35 100644 --- a/models/class_teacher.py +++ b/models/class_teacher.py @@ -1,35 +1,32 @@ from sqlalchemy import (Column, Integer, String, Text, - BigInteger,ForeignKey,VARCHAR,DateTime,UniqueConstraint,text + BigInteger,ForeignKey,VARCHAR,DateTime ) -from sqlalchemy.dialects.mysql import TINYINT +from sqlalchemy.dialects.mssql import TINYINT from core.database import Base from datetime import datetime -#班级老师关系表 class_teachers 中间表 ORM 模型完整定义 +#班级老师关系表 class_teachers_info_detail 中间表 ORM 模型完整定义 #字段包括id,class_id,teacher_id,role,created_at,updated_at,is_deleted class ClassTeachers(Base): - __tablename__ = "class_teachers" - __table_args__ = ( - UniqueConstraint("class_id", "teacher_id", "role", name="uk_class_teacher_role"), - ) + __tablename__ = "class_teachers_info_detail" id = Column( - BigInteger + Integer ,primary_key=True ,autoincrement=True ,comment='关系') class_id = Column( Integer - ,ForeignKey('classes.id') + ,ForeignKey('class_info_detail.id') ,nullable=False - ,comment='关联 classes.id' + ,comment='关联 class_id' ) teacher_id = Column( Integer - ,ForeignKey('teachers.id') + ,ForeignKey("teacher_info_detail.id") ,nullable=False - ,comment='关联 teachers.id' + ,comment='关联 teacher_id' ) role = Column( VARCHAR(30) @@ -39,22 +36,18 @@ class ClassTeachers(Base): created_at = Column( DateTime ,nullable=False - ,default=datetime.now - ,server_default=text("CURRENT_TIMESTAMP") + ,default=datetime.now() ,comment='创建时间' ) updated_at = Column( DateTime ,nullable=False - ,default=datetime.now - ,onupdate=datetime.now - ,server_default=text("CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP") + ,default=datetime.now() ,comment='更新时间' ) is_deleted = Column( TINYINT ,nullable=False ,default=0 - ,server_default=text("0") ,comment='逻辑删除' ) diff --git a/models/employment.py b/models/employment.py index 199d275..76a1f7c 100644 --- a/models/employment.py +++ b/models/employment.py @@ -1,5 +1,4 @@ from sqlalchemy import * -from sqlalchemy.dialects.mysql import TINYINT from sqlalchemy.orm import declarative_base,sessionmaker from datetime import datetime from core.database import Base, engine @@ -7,17 +6,15 @@ from core.database import Base, engine # 为了符合三范式,就业表只保存 student_id,不保存学生姓名和班级名称。查询返回时通过关联 students 和 classes 带出学生姓名、班级名称。 class Employment(Base): - __tablename__ = "employments" # 实际数据库的表名字 - id = Column(BigInteger, primary_key=True # 主键 + __tablename__ = "employment_info_detail" # 实际数据库的表名字 + id = Column(Integer, primary_key=True # 主键 , autoincrement=True # 声明是自增主键 ,comment="就业信息主键id") - student_id = Column(Integer, ForeignKey("students.id") # 外键 -> students.id + student_id = Column(Integer, ForeignKey("student_info_detail.id") # 外键 -> students.id , nullable=False # 不允许为null - , unique=True # 每个学生只对应一条就业信息 ,comment="关联学生id") - employment_status = Column(String(30) + employment_status = Column(String(50) , default="not_started" - , nullable=False ,comment="就业状态:not_started/job_hunting/offered/employed") employment_open_date = Column(Date ,comment="就业开放时间") @@ -25,25 +22,19 @@ class Employment(Base): ,comment="offer下发时间") company_name = Column(String(100) , comment="就业公司名称") - salary = Column(DECIMAL(10, 2) # 定点小数薪资,最多10位数字,小数占2位 + salary = Column(DECIMAL(10, 2) # 高精度浮点数薪资,最多 10 位数字,小数占 2 位 , comment="就业薪资") remark = Column(String(255) ,default=None , comment="备注信息") created_at = Column(DateTime , default=datetime.now - , server_default=text("CURRENT_TIMESTAMP") - , nullable=False , comment="创建时间") updated_at = Column(DateTime , default=datetime.now , onupdate=datetime.now - , server_default=text("CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP") - , nullable=False ,comment="更新时间") - is_deleted = Column(TINYINT + is_deleted = Column(SmallInteger ,default=0 - ,server_default=text("0") - ,nullable=False ,comment="逻辑删除:0正常,1删除") diff --git a/models/score.py b/models/score.py index c7ebe9d..90e9682 100644 --- a/models/score.py +++ b/models/score.py @@ -1,22 +1,20 @@ from sqlalchemy import * -from sqlalchemy.dialects.mysql import TINYINT from core.database import Base from datetime import datetime,date class Score(Base): - __tablename__ = "scores" + __tablename__ = "score_info_detail" id = Column(Integer , primary_key=True ,autoincrement=True ,comment="成绩表序号,自增主键" ) student_id = Column(Integer - ,ForeignKey("students.id") + ,ForeignKey("student_info_detail.id") ,nullable=False ,comment="学生学号" ) score = Column(DECIMAL(4,1) ,CheckConstraint("score between 0 and 100") - ,nullable=False ) exam_seq= Column(Integer , nullable=False @@ -24,31 +22,25 @@ class Score(Base): __table_args__ = ( UniqueConstraint("student_id" , "exam_seq" - , name="uk_scores_student_exam"), - )#学生id和考核序次联合唯一,即一个学生一次考试只能有一个分数 + , name="uk_student_exam_seq"), + )#学生id和学生姓名应为联合唯一,即一个学生一次考试只能有一个分数 exam_date=Column(Date ,default=date.today ,comment="考试日期" ) created_at=Column(DateTime ,default=datetime.now - ,server_default=text("CURRENT_TIMESTAMP") - ,nullable=False ,comment="创建时间" ) updated_at=Column(DateTime ,default=datetime.now ,onupdate=datetime.now - ,server_default=text("CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP") - ,nullable=False ,comment="更新时间" ) - remark=Column(String(255) + remark=Column(String(225) ,comment="备注说明" ) - is_deleted=Column(TINYINT + is_deleted=Column(Integer ,default=0 - ,server_default=text("0") - ,nullable=False ,comment="逻辑删除标记:未删除0,已删除1" - ) + ) \ No newline at end of file diff --git a/models/student.py b/models/student.py index 97a70a9..ab805e4 100644 --- a/models/student.py +++ b/models/student.py @@ -1,30 +1,27 @@ from core.database import Base from sqlalchemy import * -from sqlalchemy.dialects.mysql import TINYINT from datetime import datetime class Student(Base): - __tablename__ = 'students' + __tablename__ = 'student_info_detail' id = Column(Integer , primary_key=True , autoincrement=True , comment = '学生编号,自增主键' ) student_no = Column(VARCHAR(50) - , unique = True - , nullable = False) - student_name = Column(VARCHAR(50), nullable=False) + , unique = True) + student_name = Column(VARCHAR(50)) class_id = Column(Integer - ,ForeignKey('classes.id') - ,nullable = False + ,ForeignKey('class_info_detail.id') )#外键约束 班级表的主键id,存在这个班级,学生表才可以输入 consultant_id = Column(Integer - ,ForeignKey('consultants.id') + , ForeignKey('consultant_info_detail.id') ,nullable = True )#外键约束 顾问表的主键id,存在这个顾问,才可以写入,允许为空 native_place = Column(VARCHAR(100) ,nullable = True) - graduate_school = Column(VARCHAR(100) + graduation_school = Column(VARCHAR(100) ,nullable = True) major = Column(VARCHAR(100) ,nullable = True) @@ -38,17 +35,11 @@ class Student(Base): ,nullable = False) gender = Column(VARCHAR(10) ,nullable = False) - created_at = Column(DATETIME + create_at = Column(DATETIME + ,default = datetime.now) + update_at = Column(DATETIME ,default = datetime.now - ,server_default = text("CURRENT_TIMESTAMP") - ,nullable = False) - updated_at = Column(DATETIME - ,default = datetime.now - ,onupdate = datetime.now - ,server_default = text("CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP") - ,nullable = False) - is_deleted = Column(TINYINT - ,default = 0 - ,server_default = text("0") - ,nullable = False)#逻辑删除,默认为0,为1则表示已删除 + ,onupdate = datetime.now) + is_deleted = Column(Integer + ,default = 0)#逻辑删除,默认为0,为1则表示已删除 diff --git a/models/teacher.py b/models/teacher.py index 180d342..9c8c6bf 100644 --- a/models/teacher.py +++ b/models/teacher.py @@ -1,15 +1,14 @@ -from sqlalchemy import (Column, Integer,VARCHAR,DateTime,text +from sqlalchemy import (Column, Integer,VARCHAR,DateTime ) -from sqlalchemy.dialects.mysql import TINYINT +from sqlalchemy.dialects.mssql import TINYINT from core.database import Base from datetime import datetime - # teachers 老师表 ORM 模型 #字段包括id,teacher_no,teacher_name,phone,email,remark,created_at,updated_at,is_deleted class Teacher(Base): - __tablename__ = 'teachers' + __tablename__ = 'teacher_info_detail' id = Column( Integer , primary_key=True @@ -37,30 +36,26 @@ class Teacher(Base): ,comment='邮箱' ) remark = Column( - VARCHAR(255) + VARCHAR(2550) ,nullable=True ,comment='备注' ) created_at = Column( - DateTime + DateTime ,nullable=False ,default=datetime.now - ,server_default=text("CURRENT_TIMESTAMP") ,comment='创建时间' ) updated_at = Column( DateTime ,nullable=False ,default=datetime.now - ,onupdate=datetime.now - ,server_default=text("CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP") ,comment='更新时间' ) is_deleted = Column( TINYINT ,nullable=False ,default=0 - ,server_default=text("0") ,comment='逻辑删除' )