我正在尝试编写一个alembic迁移来向表中添加一个datetime列。我希望所有现有行的默认时间为现在,而未来的行则默认为创建它们的时间。我已经尝试过server_default='now()'
,它将所有现有的行设置为现在,但是新的行似乎得到了相同的时间。如何设置默认值,以便新行获得当前时间?
发布于 2014-07-07 21:31:32
问题是,默认设置为now()
的结果,而不是它的执行,因此默认值将是设置的确切时间,而不是插入时的当前时间。使用sa.func.current_timestamp()
将其设置为该函数,而不是该函数的结果。
def upgrade():
op.add_column('my_table', sa.Column('my_column', sa.DateTime,
server_default=sa.func.current_timestamp()))
https://stackoverflow.com/questions/23512479
复制相似问题