Python 当SqlAlchemy中的列上存在默认设置时,显式将该列的值设置为NULL

Python 当SqlAlchemy中的列上存在默认设置时,显式将该列的值设置为NULL,python,sqlalchemy,Python,Sqlalchemy,我有一个定义如下的表: 类事物(基本): __tablename_u=“things” my_field=Column(Text,nullable=True,default=lambda c:“default”) (在我的实际实现中,默认函数更复杂,但我认为说我正在使用函数生成默认值是恰当的。) 在某些情况下,我希望能够将my_字段的值显式设置为NULL。我试过: thing=thing(我的_字段=None) 但是在会话中添加(东西);Session.commit()默认值由函数生成,并写

我有一个定义如下的表:

类事物(基本):
__tablename_u=“things”
my_field=Column(Text,nullable=True,default=lambda c:“default”)
(在我的实际实现中,默认函数更复杂,但我认为说我正在使用函数生成默认值是恰当的。)

在某些情况下,我希望能够将
my_字段的值显式设置为
NULL
。我试过:

thing=thing(我的_字段=None)

但是在
会话中添加(东西);Session.commit()
默认值由函数生成,并写入我的显式
None
。是否有一种方法可以在一般情况下使用默认值,但有时会显式地为列设置Null?

这是由于SQLAlchemy ORM中的一个怪癖造成的。即使在具有默认值的列上显式将值设置为
None
,也会将其视为未设置任何值。您需要使用
null
SQL构造来解决这个问题。有关更多详细信息,请参阅

from sqlalchemy import null

thing = Thing(my_field=null())