第一版_完整
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
# model/__init__.py
|
||||
# 这个文件不是「模型之间互相导入」,而是「聚合入口」,单向扇出,不成环
|
||||
|
||||
from database import Base
|
||||
|
||||
from model.advisor_model import AdvisorInfo
|
||||
from model.cls_mgmt_model import ClsMgmt
|
||||
from model.employ_model import StudentEmployManage
|
||||
from model.stu_model import StuInfo
|
||||
from model.stu_score_model import StuScore
|
||||
from model.teacher_model import Teacher
|
||||
from model.users import User
|
||||
|
||||
__all__ = [
|
||||
"Base",
|
||||
"AdvisorInfo",
|
||||
"ClsMgmt",
|
||||
"StudentEmployManage",
|
||||
"StuInfo",
|
||||
"StuScore",
|
||||
"Teacher",
|
||||
"User",
|
||||
]
|
||||
@@ -0,0 +1,15 @@
|
||||
# model/advisor_model.py
|
||||
from sqlalchemy import Column, String, Integer
|
||||
from sqlalchemy.orm import relationship
|
||||
from database import Base
|
||||
|
||||
|
||||
class AdvisorInfo(Base):
|
||||
__tablename__ = "advisor_info"
|
||||
|
||||
id = Column(String(15), primary_key=True)
|
||||
name = Column(String(20), nullable=False)
|
||||
phone = Column(String(20), nullable=False)
|
||||
is_deleted = Column(Integer, nullable=False, default=0)
|
||||
|
||||
students = relationship("StuInfo", back_populates="adv")
|
||||
+19
-9
@@ -1,7 +1,9 @@
|
||||
from sqlalchemy import Column, Integer, String, DateTime, Date
|
||||
from sqlalchemy import Column, Integer, String, DateTime, Date, ForeignKey
|
||||
from sqlalchemy.orm import relationship
|
||||
from sqlalchemy.sql import func
|
||||
from database import Base
|
||||
|
||||
|
||||
class ClsMgmt(Base):
|
||||
"""
|
||||
班级管理表模型
|
||||
@@ -12,11 +14,19 @@ class ClsMgmt(Base):
|
||||
# 字段定义
|
||||
id = Column(String(15), primary_key=True, nullable=False) # 班级编号,主键,非空
|
||||
cls_start_date= Column(Date, nullable=False) #开课时间
|
||||
head_tea_id =Column(String(15),nullable=False) # 班主任id
|
||||
lecturer_id=Column(String(15),nullable=False) # 主讲老师id
|
||||
is_deleted=Column(Integer,nullable=False)
|
||||
# created_at:创建时间,自动设置为当前时间(服务器时间)
|
||||
# server_default=func.now() 表示由数据库生成默认值
|
||||
created_at = Column(DateTime(timezone=True), server_default=func.now())
|
||||
# updated_at:更新时间,当记录更新时自动设置为当前时间(由 SQLAlchemy 的 onupdate 触发)
|
||||
updated_at = Column(DateTime(timezone=True), onupdate=func.now())
|
||||
head_tea_id =Column(String(15), ForeignKey("tea_info.id"),nullable=False) # 班主任id
|
||||
lecturer_id=Column(String(15), ForeignKey("tea_info.id"),nullable=False) # 主讲老师id
|
||||
is_deleted=Column(Integer,nullable=False, default=0)
|
||||
|
||||
stu = relationship("StuInfo",back_populates="cls")
|
||||
|
||||
head_teacher = relationship("Teacher",
|
||||
foreign_keys=[head_tea_id],
|
||||
back_populates="head_classes")
|
||||
|
||||
lecturer = relationship("Teacher",
|
||||
foreign_keys=[lecturer_id],
|
||||
back_populates="lecturer_classes")
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
# model/employ_model.py
|
||||
# 本文件定义 stu_emp_mgmt 表的结构,映射到 MySQL 数据库
|
||||
# author:王博
|
||||
|
||||
from sqlalchemy import Column, String, Date, Integer, ForeignKey, DECIMAL
|
||||
from sqlalchemy.orm import relationship
|
||||
from database import Base
|
||||
|
||||
|
||||
class StudentEmployManage(Base):
|
||||
"""
|
||||
学生就业管理表 的映射 模型表
|
||||
对应 MYSQL 中的 stu_emp_mgmt 表
|
||||
"""
|
||||
__tablename__ = 'stu_emp_mgmt'
|
||||
stu_id = Column(String(15),ForeignKey('stu_info.id'),primary_key=True,nullable=False,) # 主键 索引
|
||||
emp_open_time = Column(Date,nullable=True,default=None) # 就业开放时间
|
||||
send_offer_time = Column(Date, nullable=True,default=None) # 收到Offer时间
|
||||
emp_company = Column(String(50),nullable=True,default=None) # 就业公司名称
|
||||
salary = Column(DECIMAL(10,2),nullable=True,default=None) # 薪资待遇(月薪/元),共10位数,最多两位小数
|
||||
is_deleted = Column(Integer, nullable=False,default=0) # 软删除: 0-正常 1-已删除
|
||||
|
||||
stu = relationship('StuInfo',back_populates="stu_emp_mgmt") # 与学生信息表一对一关联,stu为 学生就业管理表 的 学生属性
|
||||
|
||||
|
||||
def __repr__(self):
|
||||
"""
|
||||
返回对象时,自定义 返回的对象信息
|
||||
:return:
|
||||
"""
|
||||
return (f'<EmployStatus'
|
||||
f'("学生编号"={self.stu_id},'
|
||||
f'"就业开放时间"={self.emp_open_time},'
|
||||
f'"offer下发时间"={self.send_offer_time},'
|
||||
f'"就业公司名称"{self.emp_company}:,'
|
||||
f'"就业薪资":{self.salary})>')
|
||||
+15
-4
@@ -4,8 +4,9 @@ from database import Base
|
||||
#学生信息表模型
|
||||
class StuInfo(Base):
|
||||
__tablename__="stu_info"
|
||||
|
||||
id = Column(String(15),primary_key=True)
|
||||
cls_id=Column(String(15),ForeignKey(cls_mgmt.id),nullable=False)
|
||||
cls_id=Column(String(15),ForeignKey("cls_mgmt.id"),nullable=False)
|
||||
name=Column(String(20),nullable=False)
|
||||
gender=Column(String(1),default="男")
|
||||
age=Column(Integer,default=None)
|
||||
@@ -15,8 +16,18 @@ class StuInfo(Base):
|
||||
education=Column(String(20),default=None)
|
||||
enr_date=Column(Date,default=None)
|
||||
grad_date = Column(Date, default=None)
|
||||
advisor_id=Column(String(15),ForeignKey(advisor_info.id),default=None)
|
||||
advisor_id=Column(String(15),ForeignKey("advisor_info.id"),default=None)
|
||||
state=Column(String(10),default="在读")
|
||||
is_deleted=Column(Integer,default=0)
|
||||
is_deleted=Column(Integer, nullable=False, default=0)
|
||||
|
||||
cls=relationship("ClsMgmt",back_populates="stu")
|
||||
adv=relationship("AdvisorInfo",back_populates="stu")
|
||||
|
||||
score = relationship("StuScore",back_populates="student")
|
||||
|
||||
adv = relationship("AdvisorInfo", back_populates="students")
|
||||
|
||||
stu_emp_mgmt = relationship(
|
||||
"StudentEmployManage",
|
||||
back_populates="stu",
|
||||
uselist=False,
|
||||
)
|
||||
|
||||
@@ -2,11 +2,12 @@
|
||||
# 本文件定义 User 表的结构,映射到 MySQL 数据库
|
||||
|
||||
from sqlalchemy import Column, Integer, String, DateTime, Boolean, ForeignKey
|
||||
from sqlalchemy.dialects.mysql import DECIMAL
|
||||
from sqlalchemy.orm import relationship
|
||||
from sqlalchemy.sql import func
|
||||
from database import Base
|
||||
|
||||
class Stu_score(Base):
|
||||
class StuScore(Base):
|
||||
"""
|
||||
用户表模型
|
||||
对应 MySQL 中的 users 表
|
||||
@@ -15,20 +16,15 @@ class Stu_score(Base):
|
||||
|
||||
# 字段定义
|
||||
id = Column(Integer,primary_key=True, nullable=False,autoincrement=True) #
|
||||
# stu_id = Column(String(10),ForeignKey(stu_info.id),nullable=False) #学生id,非空
|
||||
exam_attempt = Column(Integer, nullable=False) # 考试轮次,非空
|
||||
exam_score = Column(Integer, nullable=False,) # 成绩,非空,设置范围
|
||||
score_level=Column(String(10),nullable=False) #成绩评级
|
||||
stu_id = Column(String(15),ForeignKey("stu_info.id"),nullable=False) #学生id,非空
|
||||
exam_attempt = Column(Integer, nullable=False, default= 1) # 考试轮次,非空
|
||||
exam_score = Column(DECIMAL(5, 2), nullable=False,) # 成绩,非空,设置范围
|
||||
score_level=Column(String(10),nullable=False, default="普通") #成绩评级
|
||||
is_deleted=Column(Boolean,default=False,nullable=False) #软删除: 0-正常 1-已删除
|
||||
name = relationship("Stu_info", back_populates="score")
|
||||
|
||||
student = relationship("StuInfo", back_populates="score")
|
||||
|
||||
def __repr__(self):
|
||||
return (f"<Stu_info(id={self.stu_id}, exam_attempt='{self.exam_attempt}'"
|
||||
f"exam_score={self.exam_score}, score_level='{self.score_level}'"
|
||||
f"is_deleted={self.is_deleted})>")
|
||||
# created_at:创建时间,自动设置为当前时间(服务器时间)
|
||||
# server_default=func.now() 表示由数据库生成默认值
|
||||
created_at = Column(DateTime(timezone=True), server_default=func.now())
|
||||
|
||||
# updated_at:更新时间,当记录更新时自动设置为当前时间(由 SQLAlchemy 的 onupdate 触发)
|
||||
updated_at = Column(DateTime(timezone=True), onupdate=func.now())
|
||||
f"is_deleted={self.is_deleted})>")
|
||||
+12
-3
@@ -1,17 +1,26 @@
|
||||
#教师建表语句
|
||||
from sqlalchemy import Column, String, Integer
|
||||
from sqlalchemy.orm import relationship
|
||||
|
||||
from database import Base
|
||||
|
||||
|
||||
class Teacher(Base):
|
||||
__tablename__ = "ted_info" # 表名
|
||||
__tablename__ = "tea_info" # 表名
|
||||
|
||||
# 字段定义
|
||||
id = Column(Integer, primary_key=True, index=True) # 主键,索引
|
||||
id = Column(String(15), primary_key=True, index=True) # 主键,索引
|
||||
name = Column(String(20),nullable=False) # 用户名,非空
|
||||
phone = Column(String(20),unique=True,nullable=False) # 电话,唯一,非空
|
||||
type = Column(String(20), nullable=False) # 教师职位,非空
|
||||
is_deleted = Column(Integer, default=0) # 逻辑删除(软删除),0是未删除,1是删除,默认为0
|
||||
is_deleted = Column(Integer, nullable=False, default=0) # 逻辑删除(软删除),0是未删除,1是删除,默认为0
|
||||
|
||||
|
||||
head_classes = relationship("ClsMgmt",
|
||||
foreign_keys="ClsMgmt.head_tea_id",
|
||||
back_populates="head_teacher")
|
||||
|
||||
lecturer_classes = relationship("ClsMgmt",
|
||||
foreign_keys="ClsMgmt.lecturer_id",
|
||||
back_populates="lecturer")
|
||||
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
# model/users.py
|
||||
# 本文件定义 User 表的结构,映射到 MySQL 数据库
|
||||
|
||||
from sqlalchemy import Column, Integer, String, DateTime
|
||||
from sqlalchemy.sql import func
|
||||
from database import Base
|
||||
|
||||
class User(Base):
|
||||
"""
|
||||
用户表模型
|
||||
对应 MySQL 中的 users 表
|
||||
"""
|
||||
__tablename__ = "users" # 表名
|
||||
|
||||
# 字段定义
|
||||
id = Column(Integer, primary_key=True, index=True) # 主键,自增,索引
|
||||
username = Column(String(50), unique=True, index=True, nullable=False) # 用户名,唯一,非空
|
||||
email = Column(String(100), unique=True, index=True, nullable=False) # 邮箱,唯一,非空
|
||||
full_name = Column(String(100), nullable=True) # 全名,可为空
|
||||
|
||||
# created_at:创建时间,自动设置为当前时间(服务器时间)
|
||||
# server_default=func.now() 表示由数据库生成默认值
|
||||
created_at = Column(DateTime(timezone=True), server_default=func.now())
|
||||
|
||||
# updated_at:更新时间,当记录更新时自动设置为当前时间(由 SQLAlchemy 的 onupdate 触发)
|
||||
updated_at = Column(DateTime(timezone=True), onupdate=func.now())
|
||||
Reference in New Issue
Block a user