如何在SQLAlchemy Alembic迁移中更新记录?

时间:2017-04-12 02:50:00

标签: python mysql sqlalchemy database-migration alembic

我正在为我的SQLAlchemy应用程序编写数据库迁移脚本。 下面的迁移工作。但它实际上并没有做任何事情(还有!):

 1: from alembic import op
 2: import sqlalchemy as sa
 3: 
 4: def upgrade():
 5:     my_table = sa.Table('my_table',
 6:                           sa.MetaData(),
 7:                           sa.Column('my_id', sa.Integer, primary_key=True),
 8:                           sa.Column('my_attribute1', sa.Text(), nullable=True),
 9:                           sa.Column('my_attribute2', sa.String(length=128), nullable=True))
10:
11:
12: connection = op.get_bind()
13: for my_record in connection.execute(my_table.select()):
14:     x = my_record.my_id
15:     print x

我想修改上面的迁移以执行以下操作,但我不知道如何:

  • 在第13行中,我想只选择那些my_attribute1 == 'Hello'
  • 的记录
  • 在第15行中,我想更新my_record而不是执行打印语句,以便my_attribute2设置为my_attribute1[:10] + 'Goodbye'

我该怎么办?当我尝试选择&更新where子句,它们不起作用。 manual没什么帮助。

1 个答案:

答案 0 :(得分:2)

在迁移中绕过ORM会更安全,只需执行类似

的操作
int(matches[3])

我认为这只是一个例子,你会做一些不同的事情,因为否则,你不需要采用my_attribute1的子字符串,因为它总是对这些记录具有相同的值'Hello'。