SQLAlchemy的类型定义语法

表名配置(核心魔法属性)

复制代码
__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,
)
相关推荐
Nturmoils12 小时前
订单列表慢查询,先看 WHERE、ORDER BY 和 LIMIT
数据库
渣波16 小时前
拒绝 SQL 焦虑!手把手带你用 NestJS + Prisma + DTO 写出“防弹”级后端代码
javascript·数据库·后端
倔强的石头_2 天前
KingbaseES 新版MySQL 兼容版体验:旧版迁移 + 功能实测
数据库
倔强的石头_5 天前
《Kingbase护城河》——数据库存储空间全景探测与精细化瘦身实战
数据库
冬奇Lab5 天前
每日一个开源项目(第134篇):Zvec - 阿里开源的嵌入式向量数据库,向量搜索界的 SQLite
数据库·人工智能·llm
ClouGence6 天前
Oracle CDC 架构优化:从主库直连到 DataGuard 备库同步
数据库·后端·oracle
无响应de神6 天前
三、用户与权限管理
数据库·mysql
麦聪聊数据6 天前
数据服务化时代:企业数据能力输出的核心路径
数据库
shushangyun_6 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
DARLING Zero two♡6 天前
【MySQL数据库】数据类型与表约束
数据库·mysql