我有一个表定义如下:
class Thing(Base):
__tablename__ = "things"
my_field = Column(Text, nullable=True, default=lambda c: "default")
Run Code Online (Sandbox Code Playgroud)
(在我的实际实现中,默认函数更复杂,但我认为说我正在使用函数来生成默认值是相关的。)
我希望在某些情况下能够显式设置my_fieldto的值NULL。我努力了:
thing = Thing(my_field=None)
Run Code Online (Sandbox Code Playgroud)
但Session.add(thing); Session.commit()默认值是由函数生成的,并覆盖我的显式None. 有没有办法一般使用默认值,但偶尔会为列显式设置 Null ?
这是由于 SQLAlchemy ORM 中的一个怪癖造成的。即使您在具有默认值的列上显式设置值None,也会将其视为未设置值。您需要使用nullSQL 构造来解决此问题。有关更多详细信息,请参阅在具有默认值的列上强制 NULL 。
from sqlalchemy import null
thing = Thing(my_field=null())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1410 次 |
| 最近记录: |