現在、HTML マークアップを含む列があります。そのマークアップ内には、新しい列に保存したいタイムスタンプがあります (それに対してクエリを実行できるようにするため)。私の考えは、1 回の移行で次のことを行うことでした。
- データの新しい null 許容列を作成する
- ORM を使用して、解析する必要がある HTML を取得します
- 行ごとに
- HTML を解析してタイムスタンプを取得する
- ORM オブジェクトを更新する
しかし、移行を実行しようとすると、無限ループに陥っているように見えます。ここに私がこれまでに持っているものがあります:
def _extract_publication_date(html):
root = html5lib.parse(html, treebuilder='lxml', namespaceHTMLElements=False)
publication_date_string = root.xpath("//a/@data-datetime")[0]
return parse_date(publication_date)
def _update_tip(tip):
tip.publication_date = _extract_publication_date(tip.rendered_html)
tip.save()
def upgrade():
op.add_column('tip', sa.Column('publication_date', sa.DateTime(timezone=True)))
tips = Tip.query.all()
map(tips, _update_tip)
def downgrade():
op.drop_column('tip', 'publication_date')