数据模型定义(models.py)

一个 Python 类 = 一张数据库表,类的属性 = 表的字段。

一、完整代码

from sqlalchemy import Column, Integer, String, Boolean
from database import Base


class User(Base):
    __tablename__ = "users"  # 必须手动指定表名

    id        = Column(Integer, primary_key=True, index=True)   # 主键 + 索引
    name      = Column(String(50), nullable=False)               # 非空字符串
    email     = Column(String(100), unique=True, nullable=False) # 唯一 + 非空
    is_active = Column(Boolean, default=True)                   # 默认值 True

    def __repr__(self):
        return f"<User(id={self.id}, name='{self.name}')>"

二、逐行解释

1. __tablename__

__tablename__ = "users"
  • 必须显式指定,SQLAlchemy 不会自动帮你命名
  • 习惯用复数名词:usersordersproducts

2. Column 参数速查

参数含义示例
primary_key=True主键id = Column(Integer, primary_key=True)
index=True建索引,加快查询常用于 WHERE 条件的字段
unique=True唯一约束邮箱、手机号等不能重复的字段
nullable=False不允许为空等价于数据库的 NOT NULL
default=值默认值插入时不指定就用这个值

3. 常用字段类型

SQLAlchemy 类型Python 类型对应数据库
IntegerintINT
String(N)strVARCHAR(N)
BooleanboolTINYINT / BOOLEAN
FloatfloatFLOAT
TextstrTEXT(不限长度)
DateTimedatetimeDATETIME
DatedateDATE

4. __repr__

def __repr__(self):
    return f"<User(id={self.id}, name='{self.name}')>"
  • 不是必须的,但强烈建议加上
  • 调试时 print(user) 会输出可读信息,而不是一个内存地址