完善统计模块及模型
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
from sqlalchemy import * # 导入sqlalchemy模块下所有的类,以便下面创建班级表模型和声明表的字段
|
||||
from datetime import datetime # 导入datetime模块下的datetime类
|
||||
from core.database import Base # 从core软件包下的database模块导入Base
|
||||
from sqlalchemy.dialects.mysql import TINYINT
|
||||
|
||||
class Classes( Base ): # 在python里的名字
|
||||
__tablename__ = 'classes' # 在数据库中表的名字
|
||||
@@ -21,7 +22,7 @@ class Classes( Base ): # 在python里的名字
|
||||
)
|
||||
# ————创建班级"开课时间"的字段名————
|
||||
start_date = Column( DATE # 声明是字段数据类型是日期
|
||||
, nullable = True # 声明是'可为空'
|
||||
, nullable = False # 开课时间必填
|
||||
)
|
||||
# ————创建班级"结课时间"的字段名————
|
||||
end_date = Column( DATE # 声明是字段数据类型是'日期'
|
||||
@@ -30,20 +31,23 @@ class Classes( Base ): # 在python里的名字
|
||||
# ————创建班级"创建时间"的字段名————
|
||||
created_at = Column( DATETIME # 声明是字段数据类型是"日期时间"
|
||||
, default=datetime.now # 声明是创建的默认值就是"当前时间"
|
||||
, server_default=text("CURRENT_TIMESTAMP")
|
||||
, nullable = False # 声明是"非空"
|
||||
)
|
||||
# ————创建班级"更新时间"的字段名————
|
||||
update_at = Column( DATETIME # 声明是字段数据类型是"日期时间"
|
||||
updated_at = Column( DATETIME # 声明是字段数据类型是"日期时间"
|
||||
, default=datetime.now #声明是第一次更新的时间就是第一次创建的时间一致
|
||||
, onupdate=datetime.now # 声明"最后修改的时间"
|
||||
, server_default=text("CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP")
|
||||
, nullable = False # 声明是"非空"
|
||||
)
|
||||
# ————创建班级"备注信息"的字段名————
|
||||
remark = Column( String(100) # 声明是字段数据类型是"字符串"
|
||||
remark = Column( String(255) # 声明是字段数据类型是"字符串"
|
||||
, nullable = True # 声明是"可以为空"
|
||||
)
|
||||
# ————创建班级"逻辑删除"的字段名————
|
||||
is_deleted = Column( INTEGER # 声明是字段数据类型是"数字"
|
||||
is_deleted = Column( TINYINT # 逻辑删除标记
|
||||
, default = 0 # 声明默认值是"0,未删除"
|
||||
, server_default = text("0")
|
||||
, nullable = False # 声明是"非空"
|
||||
)
|
||||
|
||||
+20
-13
@@ -1,32 +1,35 @@
|
||||
from sqlalchemy import (Column, Integer, String, Text,
|
||||
BigInteger,ForeignKey,VARCHAR,DateTime
|
||||
BigInteger,ForeignKey,VARCHAR,DateTime,UniqueConstraint,text
|
||||
)
|
||||
from sqlalchemy.dialects.mssql import TINYINT
|
||||
from sqlalchemy.dialects.mysql import TINYINT
|
||||
|
||||
from core.database import Base
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
#班级老师关系表 class_teachers_info_detail 中间表 ORM 模型完整定义
|
||||
#班级老师关系表 class_teachers 中间表 ORM 模型完整定义
|
||||
#字段包括id,class_id,teacher_id,role,created_at,updated_at,is_deleted
|
||||
class ClassTeachers(Base):
|
||||
__tablename__ = "class_teachers_info_detail"
|
||||
__tablename__ = "class_teachers"
|
||||
__table_args__ = (
|
||||
UniqueConstraint("class_id", "teacher_id", "role", name="uk_class_teacher_role"),
|
||||
)
|
||||
id = Column(
|
||||
BigInteger
|
||||
,primary_key=True
|
||||
,autoincrement=True
|
||||
,comment='关系')
|
||||
class_id = Column(
|
||||
BigInteger
|
||||
,ForeignKey('class_id')
|
||||
Integer
|
||||
,ForeignKey('classes.id')
|
||||
,nullable=False
|
||||
,comment='关联 class_id'
|
||||
,comment='关联 classes.id'
|
||||
)
|
||||
teacher_id = Column(
|
||||
BigInteger
|
||||
,ForeignKey('teacher_id')
|
||||
Integer
|
||||
,ForeignKey('teachers.id')
|
||||
,nullable=False
|
||||
,comment='关联 teacher_id'
|
||||
,comment='关联 teachers.id'
|
||||
)
|
||||
role = Column(
|
||||
VARCHAR(30)
|
||||
@@ -36,18 +39,22 @@ class ClassTeachers(Base):
|
||||
created_at = Column(
|
||||
DateTime
|
||||
,nullable=False
|
||||
,default=datetime.now()
|
||||
,default=datetime.now
|
||||
,server_default=text("CURRENT_TIMESTAMP")
|
||||
,comment='创建时间'
|
||||
)
|
||||
updated_at = Column(
|
||||
DateTime
|
||||
,nullable=False
|
||||
,default=datetime.now()
|
||||
,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='逻辑删除'
|
||||
)
|
||||
)
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
|
||||
from sqlalchemy import *
|
||||
from sqlalchemy.dialects.mysql import TINYINT
|
||||
from datetime import datetime
|
||||
from core.database import Base
|
||||
class Consultant(Base):
|
||||
@@ -8,10 +9,10 @@ class Consultant(Base):
|
||||
id = Column(Integer, primary_key=True, autoincrement=True, comment="主键")
|
||||
consultant_no = Column(String(50), unique=True, nullable=False, comment="顾问编号")
|
||||
consultant_name = Column(String(50), nullable=False, comment="顾问姓名")
|
||||
phone = Column(String(11), nullable=True, comment="联系电话")
|
||||
phone = Column(String(20), nullable=True, comment="联系电话")
|
||||
email = Column(String(100), nullable=True, comment="邮箱")
|
||||
remark = Column(String(255), nullable=True, comment="备注")
|
||||
|
||||
created_at = Column(DateTime, default=datetime.now, nullable=False, comment="创建时间")
|
||||
updated_at = Column(DateTime, default=datetime.now, onupdate=datetime.now, nullable=False, comment="更新时间")
|
||||
is_deleted = Column(Integer, default=0, nullable=False, comment="逻辑删除:0正常,1删除")
|
||||
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, default=0, server_default=text("0"), nullable=False, comment="逻辑删除:0正常,1删除")
|
||||
|
||||
+13
-4
@@ -1,4 +1,5 @@
|
||||
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
|
||||
@@ -10,11 +11,13 @@ class Employment(Base):
|
||||
id = Column(BigInteger, primary_key=True # 主键
|
||||
, autoincrement=True # 声明是自增主键
|
||||
,comment="就业信息主键id")
|
||||
student_id = Column(BigInteger, ForeignKey("students.id") # 外键 -> students.id
|
||||
student_id = Column(Integer, ForeignKey("students.id") # 外键 -> students.id
|
||||
, nullable=False # 不允许为null
|
||||
, unique=True # 每个学生只对应一条就业信息
|
||||
,comment="关联学生id")
|
||||
employment_status = Column(String(50)
|
||||
employment_status = Column(String(30)
|
||||
, default="not_started"
|
||||
, nullable=False
|
||||
,comment="就业状态:not_started/job_hunting/offered/employed")
|
||||
employment_open_date = Column(Date
|
||||
,comment="就业开放时间")
|
||||
@@ -22,19 +25,25 @@ 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(SmallInteger
|
||||
is_deleted = Column(TINYINT
|
||||
,default=0
|
||||
,server_default=text("0")
|
||||
,nullable=False
|
||||
,comment="逻辑删除:0正常,1删除")
|
||||
|
||||
|
||||
+15
-7
@@ -1,20 +1,22 @@
|
||||
from sqlalchemy import *
|
||||
from sqlalchemy.dialects.mysql import TINYINT
|
||||
from core.database import Base
|
||||
from datetime import datetime,date
|
||||
class Score(Base):
|
||||
__tablename__ = "score_info_detail"
|
||||
__tablename__ = "scores"
|
||||
id = Column(Integer
|
||||
, primary_key=True
|
||||
,autoincrement=True
|
||||
,comment="成绩表序号,自增主键"
|
||||
)
|
||||
student_id = Column(Integer
|
||||
,ForeignKey("student.id")
|
||||
,ForeignKey("students.id")
|
||||
,nullable=False
|
||||
,comment="学生学号"
|
||||
)
|
||||
score = Column(DECIMAL(4,1)
|
||||
,CheckConstraint("score between 0 and 100")
|
||||
,nullable=False
|
||||
)
|
||||
exam_seq= Column(Integer
|
||||
, nullable=False
|
||||
@@ -22,25 +24,31 @@ class Score(Base):
|
||||
__table_args__ = (
|
||||
UniqueConstraint("student_id"
|
||||
, "exam_seq"
|
||||
, name="uk_student_exam_seq"),
|
||||
)#学生id和学生姓名应为联合唯一,即一个学生一次考试只能有一个分数
|
||||
, name="uk_scores_student_exam"),
|
||||
)#学生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(225)
|
||||
remark=Column(String(255)
|
||||
,comment="备注说明"
|
||||
)
|
||||
is_deleted=Column(Integer
|
||||
is_deleted=Column(TINYINT
|
||||
,default=0
|
||||
,server_default=text("0")
|
||||
,nullable=False
|
||||
,comment="逻辑删除标记:未删除0,已删除1"
|
||||
)
|
||||
)
|
||||
|
||||
+21
-12
@@ -1,27 +1,30 @@
|
||||
from core.database import Base
|
||||
from sqlalchemy import *
|
||||
from sqlalchemy.dialects.mysql import TINYINT
|
||||
from datetime import datetime
|
||||
|
||||
class Student(Base):
|
||||
__tablename__ = 'student_info_detail'
|
||||
__tablename__ = 'students'
|
||||
id = Column(Integer
|
||||
, primary_key=True
|
||||
, autoincrement=True
|
||||
, comment = '学生编号,自增主键'
|
||||
)
|
||||
student_no = Column(VARCHAR(50)
|
||||
, unique = True)
|
||||
student_name = Column(VARCHAR(50))
|
||||
, unique = True
|
||||
, nullable = False)
|
||||
student_name = Column(VARCHAR(50), nullable=False)
|
||||
class_id = Column(Integer
|
||||
,foreign_key = 'class_info_detail.id'
|
||||
,ForeignKey('classes.id')
|
||||
,nullable = False
|
||||
)#外键约束 班级表的主键id,存在这个班级,学生表才可以输入
|
||||
consultant_id = Column(Integer
|
||||
,ForeignKey('consultants.id')
|
||||
,nullable = True
|
||||
,foreign_key = 'consultant_info_detail.id'
|
||||
)#外键约束 顾问表的主键id,存在这个顾问,才可以写入,允许为空
|
||||
native_place = Column(VARCHAR(100)
|
||||
,nullable = True)
|
||||
graduation_school = Column(VARCHAR(100)
|
||||
graduate_school = Column(VARCHAR(100)
|
||||
,nullable = True)
|
||||
major = Column(VARCHAR(100)
|
||||
,nullable = True)
|
||||
@@ -35,11 +38,17 @@ class Student(Base):
|
||||
,nullable = False)
|
||||
gender = Column(VARCHAR(10)
|
||||
,nullable = False)
|
||||
create_at = Column(DATETIME
|
||||
,default = datetime.now)
|
||||
update_at = Column(DATETIME
|
||||
created_at = Column(DATETIME
|
||||
,default = datetime.now
|
||||
,onupdate = datetime.now)
|
||||
is_deleted = Column(Integer
|
||||
,default = 0)#逻辑删除,默认为0,为1则表示已删除
|
||||
,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则表示已删除
|
||||
|
||||
|
||||
+9
-5
@@ -1,6 +1,6 @@
|
||||
from sqlalchemy import (Column, Integer,VARCHAR,DateTime
|
||||
from sqlalchemy import (Column, Integer,VARCHAR,DateTime,text
|
||||
)
|
||||
from sqlalchemy.dialects.mssql import TINYINT
|
||||
from sqlalchemy.dialects.mysql import TINYINT
|
||||
|
||||
from core.database import Base
|
||||
from datetime import datetime
|
||||
@@ -9,7 +9,7 @@ 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_info_detail'
|
||||
__tablename__ = 'teachers'
|
||||
id = Column(
|
||||
Integer
|
||||
, primary_key=True
|
||||
@@ -37,26 +37,30 @@ class Teacher(Base):
|
||||
,comment='邮箱'
|
||||
)
|
||||
remark = Column(
|
||||
VARCHAR(2550)
|
||||
VARCHAR(255)
|
||||
,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='逻辑删除'
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user