gpt4 book ai didi

python - 大型 django 表上的高效数据迁移

转载 作者:太空狗 更新时间:2023-10-29 21:25:05 26 4
gpt4 key购买 nike

我需要在一个大的(500 万行)django 表中添加一个新列。我有一个创建新列的 south schemamigration。现在我正在编写一个 datamigration 脚本来填充新列。看起来像这样。 (如果您不熟悉南迁移,请忽略模型名称前的 orm.。)

print "Migrating %s articles." % orm.Article.objects.count()
cnt = 0
for article in orm.Article.objects.iterator():
if cnt % 500 == 0:
print " %s done so far" % cnt
# article.newfield = calculate_newfield(article)
article.save()
cnt += 1

我从 objects.all 切换到 objects.iterator 以减少内存需求。但是当我运行这个脚本时,某些东西仍然在消耗大量内存。即使上面注释掉了实际有用的行,脚本仍然会增长到使用 10+ GB 的内存,然后才能通过表格走得很远,我放弃了。

似乎有什么东西在内存中保留着这些对象。我如何运行它才不会占用内存?

FWIW,我正在使用 python 2.6、django 1.2.1、south 0.7.2、mysql 5.1。

最佳答案

确保 settings.DEBUG 设置为 FalseDEBUG=True 会填满内存,尤其是在进行数据库密集型操作时,因为它将所有发送到 RDBMS 的查询存储在一个 View 中。

随着 Django 1.8 的推出,它不再是必需的,因为现在存储了最多 9000 个硬编码查询,而不是之前的无限数量。

关于python - 大型 django 表上的高效数据迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6271911/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com