[英]Explicitly set value of column to NULL when there is a default set on the Column in SqlAlchemy
我有一個定義如下的表:
class Thing(Base):
__tablename__ = "things"
my_field = Column(Text, nullable=True, default=lambda c: "default")
(在我的實際實現中,默認的 function 更復雜,但我認為說我使用 function 來生成默認值是恰當的。)
在某些情況下,我希望能夠將my_field
的值顯式設置為NULL
。 我試過了:
thing = Thing(my_field=None)
但是在Session.add(thing); Session.commit()
Session.add(thing); Session.commit()
默認值由 function 生成並覆蓋我的顯式None
。 有沒有辦法在一般情況下使用默認值,但偶爾會為該列顯式設置 Null?
這是由於 SQLAlchemy ORM 中的一個怪癖。即使您在具有默認值的列上顯式地將值設置為None
,它也會被視為沒有設置任何值。 您需要使用null
SQL 結構來解決此問題。 有關詳細信息,請參閱在具有默認值的列上強制使用 NULL 。
from sqlalchemy import null
thing = Thing(my_field=null())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.