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 层面进行类型检查,确保该字段的值只能是 None、True 或 False。
如果传入了其他类型(比如整数 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)
浙公网安备 33010602011771号