005*_*005 5 sqlalchemy alembic
如何使Alembic为新列使用指定的默认值,而不将其设置为server_default?
仅现有行应接收此默认值。插入后的新行仍应获取server_default。
小智 10
您必须使用server_default,但您需要以与数据库处理它相同的格式将值作为字符串传递。
例如:
op.add_column('users', sa.Column('created_at', sa.DateTime(), nullable=False, server_default=str(datetime.now())))
Run Code Online (Sandbox Code Playgroud)
看看米格尔格林伯格在这里说了什么:
我有一个类似的问题,我想要一个新列不可为空,当然,这不适用于现有行。因此,我首先创建了没有非空约束的行,用一些自定义 python 代码填充该列,然后更改该列(在同一迁移中)以具有约束。
因此,您需要迭代现有对象,根据瞬态默认值设置值。
| 归档时间: |
|
| 查看次数: |
1778 次 |
| 最近记录: |