我的数据库中有一个包含链接列表的表。
ID | page | prior | next
1 | A | 0 | 2
2 | B | 1 | 3
3 | C | 2 | 4
4 | D | 3 | 5
5 | E | 4 | 0
如何显示此表中的所有项目?几次位置交换和插入后,SORT BY
将不起作用。我正在使用Flask,它使用Jinja2模板。我当前的方法是找到第一个项目并将其添加到列表中。然后,根据上一项的“下一个”值,收集下一行并将其添加到列表中。]
num_rows = Pages.query.count() # find first row, the one where prior is 0 first_row = Pages.query.filter_by(prior=0).first() # create a list containing just the first row for now all_rows = [first_row, ] # add new rows to the list for i in range(0, (num_rows-1)): current_row = all_rows[i].next all_rows.append(Pages.query.get(current_row))
最后,我将列表传递给
render_template('template.html', all_rows = all_rows)
,然后在模板中检索它。
当然还有更优雅的方法吗?我想这会执行得很糟糕,需要大量资源?
我的数据库中有一个包含链接列表的表。 ID |页面先前下1个| A | 0 | 2 2 | B | 1 | 3 3 | C | 2 | 4 4 | D | 3 | 5 5 | E | 4 | 0怎么做...
取决于您使用的是哪种DBMS。 Oracle具有专有的CONNECT BY PRIOR
语法,非常易于阅读。许多其他语言的WITH
语法较难理解,但可以实现相同的结果。