fastapi:访问mysql时报错:sqlalchemy.exc.StatementError: (builtins.ValueError) Value 123 is not None, True, or False

一,报错信息:

sqlalchemy.exc.StatementError: (builtins.ValueError) Value 123 is not None, True, or False

二,原因:

这个报错的根本原因在于:你把数据库中某个定义为布尔类型(Boolean / BOOL)的字段,错误地传入了整数值 123

SQLAlchemy 的 Boolean 类型非常严格,在将数据写入数据库之前,它会在 Python 层面进行类型检查,确保该字段的值只能是 NoneTrueFalse
如果传入了其他类型(比如整数 123),就会直接抛出 builtins.ValueError

 

原因:stock(库存)字段在 SQLAlchemy 模型中被误定义为了 Boolean

原因在于我不小心把 stock 字段的类型写成了 Boolean,而它本应该是 Integer

❌ 错误的数据模型:

Python
class Product(Base):
    __tablename__ = "products"
    
    id = Column(Integer, primary_key=True)
    name = Column(String)
    price = Column(Integer)
    stock = Column(Boolean)  # 👈 罪魁祸首:这里误写成了 Boolean

✅ 修复方法:stock 的类型修改为 Integer(或 SmallInteger):

Python
    stock = Column(Integer)  # 或者 Mapped[int] = mapped_column(Integer)
posted @ 2026-06-12 10:53  刘宏缔的架构森林  阅读(8)  评论(0)    收藏  举报