SQLAlchemy的字段default默认值

我们都知道:

age = Column('age', Integer, default=18)

这样的字段定义方式,即字段age默认值为18。

但是SQLAlchemy中,这个定义会出现一个问题:即默认值只有插入到数据库中才能生效。同样在运行中时,我们如果不用session.query(..)的方法,是无法获得这个值的,也即是说obj.age返回None。
即使session.commit()session.flush()也没用。有人说的ColumnDefault(), server_default=..也都没用。

因为,default只会影响数据库,而不存留在ORM对象里。
所以,除了一些比较麻烦的hack外,还是建议直接给ORM对象的这个column字段显式赋值,比如obj = MyORM(age=18),这样就能获取obj.age了。

参考:Default Objects API
参考:How to apply Column defaults before a commit in sqlalchemy

你可能感兴趣的:(SQLAlchemy的字段default默认值)