Mike, I've encountered a behavior that is a bit unexpected:
class Model(Base): a = Column(Integer, nullable=True, default=1) m = Model() m.a = None session.add(m) In: print m.a Out: None session.commit() In: print m.a Out: 1
None is expected :(
I understand that the configuration is silly, but this is the existing code. Setting None to the column doesn't cancel the default and the default thinks that the column wasn't set, so it uses the default value in the end.