Şu anda HTML işaretlemesi içeren bir sütuna sahibim. Bu işaretlemenin içinde, yeni bir sütunda saklamak istediğim bir zaman damgası var (bu yüzden buna karşı sorgulayabiliyorum). Benim fikrim Tek bir taşıma aşağıdaki işlemleri yapmak üzere idi: Ben her satır için SQLalchemy ORM'yi Alembic migrasyon içinde kullanma: nasıl yapabilirim?
-
- damgası
- güncelleme ORM nesne çıkarmak için HTML ayrıştırmak
Ancak, geçişimi çalıştırmaya çalıştığımda sonsuz bir döngüde kalıyormuş gibi görünüyor. benim için çalıştı Ne
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')
Bunun sonsuz bir döngüde sıkıştığını nereden biliyorsunuz? –
Eğer 'Tip.query', 'op' ile aynı seansı kullanmıyorsa, 'SELECT' ile 'ALTER TABLE' birinin işlenmesini bekleyerek sıkışmış 2 işlem olacaktır. Her neyse, ORM bölümünü "alembic upgrade" den sonra elle çalıştırılmak için kendi betiğine taşımak daha temiz olduğunu düşünüyorum. – sayap
@ X-Istence Biliyorum sonsuz bir döngüde sıkışmış. Ben ** DO komutunun asla geri dönmediğini biliyorum. –