如何更新 SQLAlchemy 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 子句进行选择和更新时,它们不起作用。手册没有多大帮助。

在迁移中绕过ORM并执行类似操作会更安全

connection = op.get_bind()
connection.execute("UPDATE my_table SET my_attribute2 = SUBSTRING(my_attribute1, 0, 10) + 'Goodbye' WHERE my_attribute1 = 'Hello'")

我认为这只是一个例子,您将做一些不同的事情,因为否则,您将不需要获取my_attribute1的子字符串,因为它对这些记录始终具有相同的值"Hello"。

相关内容

  • 没有找到相关文章

最新更新