0

次のような16個のフィールドを持つ5k行のmysqlテーブルがあります

id a b c d e f g h i j k l m n o

各行を更新する必要があります

first_10_a = []
first_10_a = populate_a(10)

for selected_a in first_10_a:
 updated_row = {}
 updated_row = processing_magic(selected_a)

 #update row
 entry = db.query(myTable).filter_by(a=selected_a).first()

 entry.b = updated_row['b']
 entry.c = updated_row['c']
 ...

 # how to save the entry?
 # ?

session.commit()

私はSqlAlchemy ORMを使用しているので、クラスがあります

class my_table(Base)

新しいオブジェクトを作成し、それを使用して行を更新することは可能ですか?

new_obj = my_table(update_row['a'],update_row['b'],update_row['c'],...)
#??? session.query(my_table).filter(a=selected_a).update(new_obj)

もしそうなら、session.flush/commit/save でどのように動作しますか? (つまり、for ループの外で一括コミットすることは可能ですか?それによってパフォーマンスが向上しますか?)

私は絶対にそのように行く必要はないので、他の提案は大歓迎です。

4

0 に答える 0