Keep reading the comments, you can try something like this:
import sqlalchemy as sa tip = sa.sql.table( 'tip', sa.sql.column('id', sa.Integer), sa.sql.column('publication_date', sa.DateTime(timezone=True)), ) def upgrade(): mappings = [ (x.id, _extract_publication_date(x.rendered_html)) for x in Tip.query ] op.add_column('tip', sa.Column('publication_date', sa.DateTime(timezone=True))) exp = sa.sql.case(value=tip.c.id, whens=( (op.inline_literal(id), op.inline_literal(publication_date)) for id, publication_date in mappings.iteritems() )) op.execute(tip.update().values({'publication_date': exp})) def downgrade(): op.drop_column('tip', 'publication_date')
source share