0
私はSQLAlchemyアプリケーション用のデータベース移行スクリプトを作成しています。 以下の移行が機能します。SQLAlchemy Alembicの移行でレコードを更新するには?
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で私はライン#15の代わりにprint文を実行するには
my_attribute1
=='Hello'
- が、私は
my_attribute2
がmy_attribute1[:10] + 'Goodbye'
my_record
ように更新するレコードだけを選択したいです
どうすればいいですか? where句で更新を選択しようとしたところ、動作しませんでした。 manualはあまり役に立たなかった。
ここではインデントの問題が発生しています。 forループは、アップグレード機能の一部ではありません。あなたの質問で試した句には、選択と更新を含めてください。 DMLマニュアルの代わりに[SQL Expression Language Tutorial](http://docs.sqlalchemy.org/en/latest/core/tutorial.html#inserts-updates-anddelees)を読んでください。 –
また、どのように動作しなかったのか説明してください。例外はありましたか?その場合は、トレースバックを含めます。アップグレードは実行されましたが、変更は保存されませんでしたか? –