33 lines
1.3 KiB
Python
33 lines
1.3 KiB
Python
import enum
|
|||
|
|
|
||
|
|
from sqlalchemy import Column, Enum as SQLEnum, Integer, String
|
||
|
|
from sqlalchemy.orm import relationship
|
||
|
|
|
||
|
|
from database import Base
|
||
|
|
|
||
|
|
|
||
|
|
# 性别枚举:只允许 男 / 女
|
||
|
|
class GenderEnum(str, enum.Enum):
|
||
|
|
MALE = "男"
|
||
|
|
FEMALE = "女"
|
||
|
|
|
||
|
|
|
||
|
|
# 本文件只定义 advisor 表的结构,映射到 MySQL 数据库。
|
||
|
|
# 注意:这里只放「表长什么样」,不建表、不插数据、不创建会话。
|
||
|
|
|
||
|
|
class Advisor(Base):
|
||
|
|
# 顾问表 表名 advisor
|
||
|
|
__tablename__ = 'advisor'
|
||
|
|
# 定义字段
|
||
|
|
id = Column(Integer, primary_key=True, autoincrement=True)
|
||
|
|
advisor_name = Column(String(20), unique=True, nullable=False)
|
||
|
|
flag = Column(Integer, nullable=False)
|
||
|
|
# 性别:枚举类型(男/女),可空
|
||
|
|
gender = Column(SQLEnum(GenderEnum, values_callable=lambda e: [m.value for m in e]), nullable=True)
|
||
|
|
# 电话:11位纯数字(校验在 Schema 层做),非必填
|
||
|
|
phone = Column(String(11), nullable=True)
|
||
|
|
students = relationship("Student", back_populates="advisor")
|
||
|
|
|
||
|
|
# 关联 Student(一对多:一个顾问对应多个学生)
|
||
|
|
# 等 student_model.py 里写好 Student 模型、且两边 back_populates 对上后,再取消注释启用。
|
||
|
|
# student = relationship("Student", back_populates="advisor")
|