FastAPI结合SQLAlchemy报Array()缺少sequence参数错误排查
问题原因
报错的核心触发点有两个:
Array是SQLAlchemy提供的数组类型构造器,必须传入数组存储的元素数据类型作为必填位置参数,你代码里写的Array[string]用了Python的下标方括号语法,没有把元素类型传入Array的构造方法,因此触发缺少必填参数sequence的报错。- 代码存在多处大小写、缩进的语法错误:SQLAlchemy内置的列构造方法是大写开头的
Column、字符串类型是大写开头的String,你代码里全写成了小写的column、string,同时类继承的基类、字段缩进也不符合Python类的定义规范。
补充说明:SQLAlchemy的原生Array类型默认适配PostgreSQL的原生数组字段,如果你用的是MySQL、SQLite等不支持原生数组类型的数据库,建议直接用JSON类型存储数组数据,兼容性更好。
修正方案
首先确保导入正确的类,再按照规范写模型定义:
from sqlalchemy import Column, String, Array from sqlalchemy.ext.declarative import declarative_base # 声明式基类 命名统一用大写开头的Base Base = declarative_base() class Post(Base): __tablename__ = "posts" # Array后用小括号传入元素类型String,所有内置类首字母大写,保持正确缩进 answer = Column(Array(String), nullable=False)
如果需要约束数组的固定长度,可以给Array传入dimensions参数,比如定义固定存储3个字符串的数组:
answer = Column(Array(String, dimensions=3), nullable=False)
内容的提问来源于stack exchange,提问作者Bhavya Sharma
相关产品推荐
相关产品推荐

