sqlalchemy为什么order_by和分页操作一起使用时,返回的数据和期望不同呢??

无论是用slice分页还是limit/offset做分页时候,只要排序后再分页就会出现问题,为什么??
PS:仅在每页展示数据量小于总数据量会出现问题,为什么??

result = session_read.query(cls).order_by(cls.guild_activity.desc()).slice((page_index - 1) * page_size, page_index * page_size).all()

result = session_read.query(cls).order_by(cls.guild_activity.desc()).offset((page_index - 1) * page_size).limit(page_size).all()

阅读 5.2k
2 个回答

我遇到了一模一样的问题现在已经解决。这个问题的原因不是sqlalchemy的导致的,你可以设置SQLALCHEMY_ECHO = True分析下SQL语句就知道是没有问题的。我使用的数据库是mysql,mysql的排序如果你的排序列有很多相同的值的话就会出现上述的问题。具体的原因可以参见这篇文章,感谢这位文章的大神。https://www.jianshu.com/p/1e8...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题