gpt4 book ai didi

python - 使用查询集从 Django 获取百万记录很慢

转载 作者:行者123 更新时间:2023-11-28 20:37:18 25 4
gpt4 key购买 nike

我想遍历一个表的所有对象(Post)我正在使用以下代码:

posts = Post.objects.all()
for post in posts:
process_post(post)

process_post 是一个 celery 任务,它将在后台运行并且不会更新帖子。但我遇到的问题是 Post 表有 100 万条记录。这不是一次性工作。我正在运行它每天。

for post in posts

在上一行中,调用了查询,它一次性从数据库中获取所有数据。

我怎样才能提高它的性能?有什么办法可以批量取数据吗?

最佳答案

制作您自己的迭代器。例如,假设 100 万 条记录。

count = Post.objects.all().count() #1 million
chunk_size = 1000
for i in range(0, count, chunk_size):
posts = Post.objects.all()[i:i+chunk_size]
for post in posts:
process_post(post)

在查询集上切片将播放LIMITOFFSET 用法。查询可以随着 chunk_size 的增加而减少,而内存使用量也会增加。针对您的用例对其进行优化。

关于python - 使用查询集从 Django 获取百万记录很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43540295/

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