You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python/PostgreSQL中用SQLModel创建char(N)而非varchar类型表字段

如何让SQLModel/SQLAlchemy生成CHAR(n)类型字段

SQLAlchemy 修改方案

SQLAlchemy 中,String(n) 默认映射为数据库的 varchar(n),要生成 char(n) 类型,直接使用 CHAR(n) 类型即可,需先从 sqlalchemy 导入 CHAR:

from sqlalchemy import Column, CHAR, Uuid, declarative_base
import uuid

Base = declarative_base()
class person(Base):
    __tablename__ = 'person'
    id = Column(Uuid, primary_key=True, default=uuid.uuid4)
    nickname = Column(CHAR(32))  # 替换 String 为 CHAR
    name = Column(CHAR(100))     # 替换 String 为 CHAR

SQLModel 修改方案

SQLModel 基于 SQLAlchemy 实现,可通过 Field 的 sa_type 参数指定底层 SQLAlchemy 类型,从而生成 char(n):

from sqlmodel import Field, SQLModel
from sqlalchemy import CHAR
from typing import Optional

class person(SQLModel, table=True):
    id: Optional[int] = Field(default=None, primary_key=True)
    name: str = Field(sa_type=CHAR(100))  # 指定 sa_type 为 CHAR(100)
    nickname: str = Field(sa_type=CHAR(30))  # 指定 sa_type 为 CHAR(30)

修改后,生成的表结构中 name 和 nickname 字段将变为 char(100) 和 char(30) 类型,替代默认的 varchar(n)。

内容的提问来源于stack exchange,提问作者Wellington Almeida dos Santos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 15:02:07