使用默认值添加datetime列

时间:2014-05-07 08:22:15

标签: python alembic

我尝试编写一个alembic迁移来向表中添加datetime列。我希望所有现有行的默认时间为现在,将来的行默认为创建它们的时间。我已经尝试了server_default='now()',它将所有现有行设置为现在,但新行似乎得到同样的时间。如何设置默认值以使新行获得当前时间?

1 个答案:

答案 0 :(得分:8)

问题是默认设置为now()结果,而不是执行,因此默认设置为它的确切时间已设置,而不是插入时的当前时间。使用sa.func.current_timestamp()将其设置为该函数,而不是该函数的结果。

def upgrade():
    op.add_column('my_table', sa.Column('my_column', sa.DateTime,
            server_default=sa.func.current_timestamp()))