Why isn't SQLAlchemy default column value available before object is committed?

后端 未结 3 1092
隐瞒了意图╮
隐瞒了意图╮ 2020-12-05 04:35

Recently I figured out that SQLAlchemy\'s Column default doesn\'t work as I expect it to:

>>> Base = declarative_base()
>>> class TestModel         


        
3条回答
  •  情歌与酒
    2020-12-05 05:01

    You can use force_instant_defaults listener from sqlalchemy_utils to change this behavior:

    from sqlalchemy_utils import force_instant_defaults
    
    force_instant_defaults()
    
    class TestModel(Base):
        __tablename__ = 'tmodel'
        id = sa.Column(sa.Integer, primary_key=True)
        foo = sa.Column(sa.Integer, default=0)
    
    model = TestModel()
    assert model.foo == 0
    

提交回复
热议问题