gpt4 book ai didi

python - Django 原始查询总数

转载 作者:太空宇宙 更新时间:2023-11-04 03:50:17 24 4
gpt4 key购买 nike

我有一个原始查询,例如:

# Table posts = 420 rows
>>> cursor = connection.cursor()
>>> posts = Post.objects.raw('SELECT SQL_CALC_FOUND_ROWS posts.* FROM posts LIMIT 1,10')
>>> found_rows = cursor.execute("SELECT FOUND_ROWS()")
>>> print found_rows()
1

我想知道如何获取总行数用于分页。

最佳答案

Post.objects.raw() 不执行查询——它只返回一个 RawQuerySet 实例。实际查询只会在您尝试迭代该 RawQuerySet 时执行(例如,通过在您的代码中调用 next(iter(posts)))。

由于您将查询限制为只有 10 个结果,因此您可以将所有实例拉入一个列表:

posts = list(Post.objects.raw('SELECT SQL_CALC_FOUND_ROWS posts.* FROM posts LIMIT 1,10'))

这将确保您的查询已为您的下一个 SELECT FOUND_ROWS() 执行以返回实际计数。

关于python - Django 原始查询总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21604087/

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