sqlalchemy:id的前一行和下一行

Xia*_*ong 3 python sql sqlalchemy

我有一张表id和图像name.我想使用查询数据库中的上一个图像和下一个图像sqlalchemy.如何只在一个查询中执行此操作?

sel = select([images.c.id, images.c.name]).where(images.c.id == id)
res = engine.connect().execute(sel)

#How to obtain its previous and next row?
...
Run Code Online (Sandbox Code Playgroud)

假设它是可能的某些行已被删除,即,在idS可以是不连续的.例如,

Table: Images
------------
id | name
------------
1  | 'a.jpg'
2  | 'b.jpg'
4  | 'd.jpg'
------------
Run Code Online (Sandbox Code Playgroud)

小智 6

prev_image = your_session.query(Images).order_by(Images.id.desc()).filter(Images.id < id).first()

next_image = your_session.query(Images).order_by(Images.id.asc()).filter(Images.id > id).first()
Run Code Online (Sandbox Code Playgroud)