如何在烧瓶中显示数据库中的链接数据?
How to display linked data from database in flask?
我的数据库中有一个 table 包含链表。
ID | page | prior | next
1 | A | 0 | 2
2 | B | 1 | 3
3 | C | 2 | 4
4 | D | 3 | 5
5 | E | 4 | 0
如何显示此 table 中的所有项目? SORT BY
在几次位置交换和插入后将无法工作。我正在使用 Flask,它使用 Jinja2 模板。我目前的方法是找到第一项并将其添加到列表中。然后,根据前一项的"next"值,收集下一行并将其添加到列表中。
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)
,然后在模板中检索它。
肯定有更优雅的方法吗?我想这会非常糟糕并且需要大量资源?
这取决于您使用的是什么 DBMS。 Oracle 有一个专有的 CONNECT BY PRIOR
语法,非常容易阅读。许多其他人有一个 WITH
语法,它更难遵循但可以达到相同的结果。
参见Simulation of CONNECT BY PRIOR of ORACLE in SQL SERVER。
我的数据库中有一个 table 包含链表。
ID | page | prior | next
1 | A | 0 | 2
2 | B | 1 | 3
3 | C | 2 | 4
4 | D | 3 | 5
5 | E | 4 | 0
如何显示此 table 中的所有项目? SORT BY
在几次位置交换和插入后将无法工作。我正在使用 Flask,它使用 Jinja2 模板。我目前的方法是找到第一项并将其添加到列表中。然后,根据前一项的"next"值,收集下一行并将其添加到列表中。
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)
,然后在模板中检索它。
肯定有更优雅的方法吗?我想这会非常糟糕并且需要大量资源?
这取决于您使用的是什么 DBMS。 Oracle 有一个专有的 CONNECT BY PRIOR
语法,非常容易阅读。许多其他人有一个 WITH
语法,它更难遵循但可以达到相同的结果。
参见Simulation of CONNECT BY PRIOR of ORACLE in SQL SERVER。