如何在 2 个不同的 table html 上分离数据库

How to separate database on 2 different table html

例如我有数据库

id account_id date
1 127 2022-04-25
2 128 2022-04-25
3 127 2022-04-24
4 128 2022-04-24

而且我需要在 2 个不同的 table 上将其分开:

account_id date header
127 2022-04-25
127 2022-04-24

128同理

这是我的代码 1 table,我不知道如何分开

@bp.route('/')
def main():
    wcms = Wcm.query.order_by(Wcm.date.desc()).all()
    return render_template('table.html', wcms=wcms)

HTML:

<table class="table table-hover table-dark wcm">
        <thead>
            <tr>
                <th>Date</th>
                <th>WCM account ID</th>
                <th>Number of standard tags</th>
                <th>Number of extended tags</th>
            </tr>
        </thead>
        <tbody>
            {% for wcm in wcms %}
                <tr>
                    <td>{{ wcm.date }}</td>
                    <td>{{ wcm.account_id }}</td>
                    <td>{{ wcm.nbm_stardart_tags }}</td>
                    <td>{{ wcm.nbm_custom_tags }}</td>
                </tr>
            {% endfor %}
        </tbody>
    </table>

为了使下面的代码正常工作,我们需要先按分组值对数据进行排序。既然要分开帐号ID,我就选择了ASC。

wcms = Wcm.query.order_by(Wcm.account_id.asc(), Wcm.date.desc()).all()

lambda returns 将所有条目收集到一个列表中的帐户 ID。 groupby returns list of tuples,需要调用 list() 来评估创建组的惰性迭代器。外部列表理解创建了那些分组的 Wcm 列表的列表。

wcms_by_account = [
    list(wcm_group) 
    for acc_id, wcm_group 
    in groupby(wcms, lambda x: x.account_id
]

列表结构:

[
    [
        Wcm(account_id=127, date=2022-04-25, ...),
        Wcm(account_id=127, date=2022-04-24, ...),
    ],
    [
        Wcm(account_id=128, date=2022-04-25, ...),
        Wcm(account_id=128, date=2022-04-24, ...),
    ],
    ...
]

然后更改您的 Web 模板以处理列表列表,为每个内部列表创建一个新的 table。

{% for wcms in wcms_by_account %}
  <table class="table table-hover table-dark wcm">
        <thead>
            <tr>
                <th>Date</th>
                <th>WCM account ID</th>
                <th>Number of standard tags</th>
                <th>Number of extended tags</th>
            </tr>
        </thead>
        <tbody>
            {% for wcm in wcms %}
                <tr>
                    <td>{{ wcm.date }}</td>
                    <td>{{ wcm.account_id }}</td>
                    <td>{{ wcm.nbm_stardart_tags }}</td>
                    <td>{{ wcm.nbm_custom_tags }}</td>
                </tr>
            {% endfor %}
        </tbody>
    </table>
{% endfor %}