Recently I figured out that SQLAlchemy\'s Column default doesn\'t work as I expect it to:
>>> Base = declarative_base()
>>> class TestModel
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