【发布时间】:2022-12-09 16:23:04
【问题描述】:
我正在尝试找到使用 python 批量更新 MySQL 数据库的最佳方法
我目前的方式是:
req_model.objects.bulk_update(update_queries, list(column_to_update))
在此方法中,问题是update_queries 所需的获取部分
这是模型更新对象的列表
通过网络搜索,我发现了Django的transaction.atomic():
with transaction.atomic():
for key, value in user_ids_dict:
model.objects.filter(id=key).update(some_value=value)
另一个问题是 Django 除了在元类中指定它们之外不支持复合主键
另一种方法(我目前使用的)是使用 SQLAlchemy 会话(这有效但由于服务器限制它非常慢):
self.init_session()
self.execute_bulk_update(model, mappings)
self.session.commit()
模型是一个包含更新和映射的字典列表是一个 SQLAlchemy 模型 atomic() 比会话快吗?
我也很乐意接受任何其他关于批量更新表格的更好建议。
【问题讨论】:
标签: python mysql django sqlalchemy orm