当主键为真时,SQLAlchemy 未能捕获非空约束

SQLAlchemy failing to catch not null constraint when primary key true

以前的测试会在传入 None for

时引发异常
Column(Integer, nullable=False)

现在,当我将其更改为主键 true 时,它​​不再引发异常

Column(Integer, nullable=False, primary_key=True)

我已经为 NOT NULL 尝试了一个单独的 CheckConstraint(),但它仍然没有抱怨。

当我尝试为此提交 None/Null 值时,如何让它再次抱怨?

SQLAlchemy defaults to autoincrement=True for primary key Integer columns - 因此在你的第二种情况下,NULL 从未真正插入,这就是约束仍然满足的原因。

设置 autoincrement=False 应该能让您获得想要的行为:

Column(Integer, nullable=False, primary_key=True, autoincrement=False)