相关疑难解决方法(0)

为什么在提交对象之前SQLAlchemy默认列值不可用?

最近我发现SQLAlchemy的Column默认不起作用,因为我期望它:

>>> 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
Run Code Online (Sandbox Code Playgroud)

我希望在对象实例化之后tmodel_instance.foo立即相等0,但似乎默认值仅在执行INSERT命令时使用,它确实让我感到困惑.为什么一个人更喜欢 default结束server_default?我如何实现我想要的目标?我应该指定所有默认参数__init__吗?这似乎是代码重复:更改默认值我必须将其更改两次并保持这些值相等 - 是否有某种方法可以避免这种情况?

python sqlalchemy default-value

28
推荐指数
3
解决办法
6537
查看次数

如何在sqlalchemy中提交之前应用列默认值

我有一个声明基础模型:

class User(Base):
    id = Column(Integer, primary_key=True)
    money = Column(Integer, default=100)
Run Code Online (Sandbox Code Playgroud)

然后我跑了

>>> u = User()
>>> u.money
None
Run Code Online (Sandbox Code Playgroud)

如何在向数据库写入任何内容的情况下使用sqlalchemy填充默认值?

python sqlalchemy

18
推荐指数
2
解决办法
3609
查看次数

标签 统计

python ×2

sqlalchemy ×2

default-value ×1