簡體   English   中英

當 SqlAlchemy 中的列上有默認設置時,將列的值顯式設置為 NULL

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM