我有一个 5k 行的 mysql 表,它有 16 个字段,看起来像这样
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 循环之外批量提交,这会提高性能吗?)
我绝对不必那样做,所以欢迎其他建议。