Pyodbc Invalid Parameter Type错误求助:参数传递异常排查
解决sqlalchemy.exc.ProgrammingError: (pyodbc.ProgrammingError) ('Invalid parameter type...')错误
从错误日志的参数部分可以直接定位问题:
[parameters: (<class 'int'>, 18)]
第一个参数传递的是int类型本身,而非请求中应该传入的具体数值,这就是导致数据库参数类型错误的核心原因。
问题根源
你的Pydantic Vote模型字段定义语法错误:
class Vote(BaseModel): post_id = int dir = conint(le=1)
在Pydantic模型中,字段类型声明必须使用冒号:,而等号=是用来设置字段默认值的。你用=将post_id直接赋值为int类对象,导致FastAPI解析请求时,vote.post_id并没有被正确赋值为请求体中的4,而是保留了int类型本身。
修复方法
将Pydantic模型的字段定义改为冒号语法:
class Vote(BaseModel): post_id: int dir: conint(le=1)
补充说明
修改后,FastAPI会正确解析请求体中的post_id数值,SQLAlchemy查询时就能传递正确的整数参数,数据库也能正常识别该类型,错误即可解决。另外从日志中第二个参数18来看,oauth2.get_current_user返回的用户ID是正常的整数,无需额外调整。
内容的提问来源于stack exchange,提问作者Duy Phan
相关产品推荐
相关产品推荐

