Как отобразить связанные данные из базы данных в flask? - PullRequest
0 голосов
/ 03 апреля 2020

В моей базе данных есть таблица, содержащая связанный список.

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), а затем извлекаю его в шаблоне.

Конечно, есть более элегантный подход? Я полагаю, что это будет работать ужасно и потребует много ресурсов?

1 Ответ

1 голос
/ 05 апреля 2020

Зависит от того, какую СУБД вы используете. Oracle имеет собственный синтаксис CONNECT BY PRIOR, который очень легко читать. Многие другие имеют синтаксис WITH, который сложнее следовать, но может достичь sh того же результата.

См. Моделирование ПОДКЛЮЧЕНИЯ ПО ПРИОРЕ ORACLE в SQL СЕРВЕР .

...