表名配置(核心魔法属性)
__tablename__ = "favorite"
- 双下划线开头 + 结尾:SQLAlchemy 固定魔法属性
- 作用:指定数据库里的表名
表级配置(约束、索引)
__table_args__ = ( ... )
- 同样是双下划线
- 用于给表添加:
- 唯一约束
- 索引
- 存储引擎
- 字符集
- 必须是元组格式
( , )
字段定义语法(最核心)
字段名: Mapped[类型] = mapped_column(参数...)
Mapped[类型]:Python 类型注解
mapped_column(参数):对该字段的属性设置
mapped_column () 通用常用属性
mapped_column(
# 1. 数据库字段类型
Integer, String(32), Text, DateTime, Boolean, Float, Decimal
# 2. 主键
primary_key=True, # 设为主键
autoincrement=True, # 自增(整数主键常用)
# 3. 非空 / 允许为空
nullable=True, # 不允许为空(默认 True)
# 4. 唯一
unique=True, # 字段值唯一(如手机号、用户名)
# 5. 默认值
default=datetime.utcnow, # Python 层默认值
server_default="CURRENT_TIMESTAMP", # 数据库层默认
# 6. 注释
comment="字段说明",
# 7. 索引
index=True, # 快速创建普通索引
# 8. 只读 / 不更新
insert_only=True, # 只插入,不允许更新
# 9. 隐藏字段(ORM 可用,查询默认不显示)
deferred=True,
)