最近、SQLAlchemyの列のデフォルトが期待どおりに機能しないことがわかりました。
>>> Base = declarative_base()
>>> class TestModel(Base):
... __tablename__ = 'tmodel'
... id = sa.Column(sa.Integer, primary_key=True)
... foo = sa.Column(sa.Integer, default=0)
...
>>> tmodel_instance = TestModel()
>>> print tmodel_instance.foo
None
>>> session.add(tmodel_instance)
>>> print tmodel_instance.foo
None
>>> session.commit()
>>> print tmodel_instance.foo
0
オブジェクトのインスタンス化の直後tmodel_instance.foo
に等しくしたいのですが、デフォルト値はコマンドを実行するときにのみ使用されるようで、本当に混乱します。なぜ人はよりも好むのでしょう か?そして、どうすれば私が望むものを達成できますか?すべてのデフォルト引数をで指定することになっていますか?これはコードの重複のようです。デフォルト値を変更するには、2回変更して、それらの値を等しく維持する必要があります。これを回避する方法はありますか?0
INSERT
default
server_default
__init__