如何在FastAPI中使用SQLModel创建PostgreSQL的text类型字段
FastAPI + SQLModel 配置PostgreSQL TEXT类型字段方案
默认情况下,SQLModel会将Python的str类型字段映射为PostgreSQL的VARCHAR类型,如果需要存储无长度限制的长文本,需要手动指定为TEXT类型。
实现方法
你摸索出来的方案是完全可用的,核心是通过Field的sa_column参数透传SQLAlchemy原生的字段定义:
from sqlmodel import SQLModel, Field # 引入SQLAlchemy原生的Column和TEXT类型 from sqlalchemy import Column, TEXT class BaseModel(SQLModel): # 其他原有字段保持不变 col_1: str = Field(default='Y') col_2: str = Field(default='N') col_3: str = Field(default='0') col_4: str = Field(default='0') # 定义TEXT类型字段 col_5: str = Field(sa_column=Column(TEXT))
补充说明
如果需要给TEXT类型字段设置默认值,直接在Column参数中添加default配置即可:
col_5: str = Field(sa_column=Column(TEXT, default="默认文本内容"))
这种写法也适用于其他PostgreSQL独有的字段类型(比如JSONB、ARRAY等),只要替换TEXT为对应的SQLAlchemy原生类型即可。
内容的提问来源于stack exchange,提问作者ynjo
相关产品推荐
相关产品推荐

