如何在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
相关产品推荐
相关产品推荐

