SqlAlchemy上一个/下一个访问器?

标签 sqlalchemy pylons

有什么方法可以从SqlAlchemy查询中获取上一个/下一个记录吗?像这样:

record.id
record.next.id
record.prev.id

我可以自己为每个模型添加prev/next方法,但是我想知道是否已经有一些自动方法被我忽略了。有问题的Web应用程序是用Pylons编写的。

编辑:
这可能是一个肮脏的hack,但是它可以工作。我将sqlalchemy Session对象导入到我的模型中,并执行以下操作:
def next(self):
    return Session.query(Blog).filter(Blog.id > self.id).order_by(Blog.id).first()

def prev(self):
    return Session.query(Blog).filter(Blog.id < self.id).order_by(desc(Blog.id)).first()

最佳答案

我建议您在原始查询中请求-1和+1,这样您就可以轻松获取ID,而不必运行其他查询,从而节省了在SQL Server上进行处理的时间。

您的解决方案肯定有效,但是需要额外的两个查询。您甚至可以使其成为子查询,这样,如果您只想检索单行并在其上放置上一个/下一个,则数据将存储在子查询创建的列中。

关于SqlAlchemy上一个/下一个访问器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4360749/

相关文章:

python - 在 Pyramid 应用程序中记录到 SQLAlchemy 记录器

python - .net automapper 有 python 实现吗?

sql - PostgreSQL 过滤器性能和查询优化

python - 如何在 SQLAlchemy 中使用 postgres 数字范围

python - 如何在 SQLAlchemy Core 中将列名作为参数传递?

python - FormEncode、pylons 和 mako 示例

python - 来自 Pylons 中 Mako 模板的当前页面的 URL

python - 从 Pylons 发送电子邮件

python - SQLAlchemy 查询,加入关系并按计数排序

python - 带连接的 Django 查询