Наиболее эффективный способ извлечения данных из базы данных sqlite3 и отображения результата на HTML с помощью Django?

У меня есть довольно большая база данных с именем superstore.sqlite3 размером 11 МБ. Я пытаюсь отобразить таблицу с именем Merged в этой базе данных в таблицу HTML.

Теперь, в моем views.py, я вызываю db.get_table(), чтобы получить имена столбцов и строк.

def index(request):
    table = db.get_table()
    c = {
        "cols": table["cols"],
        "rows": table["rows"]
        }
    return render(request, 'myapp/index.html', c)

Функция get_table() в основном подключается к моей базе данных и получает связанные данные:

import sqlite3
def get_table():
    c = sqlite3.connect("myapp/main/database/superstore.sqlite3")
    cur = c.cursor()
    cur.execute("SELECT * from Merged LIMIT 100")

    table = {}
    table["cols"] = list(map(lambda x: x[0], cur.description))
    table["rows"] = cur.fetchall();

    return table

В моем index.html у меня есть следующее для отображения таблицы:

<table>
        <tr>
        {% for col in cols %}
          <th>{{ col }}</th>
        {% endfor %}
        </tr>
        
       {%for row in rows%}
        <tr>

          {%for cell in row%}
          <td>{{ cell }} </td>
          {% endfor %}

        <tr>
       {% endfor %}
   
</table>

Проблема

На данный момент, как вы можете видеть, извлечение данных происходит, когда пользователи загружают страницу. Пока это нормально, поскольку я ограничил количество данных до 100 строк. Но вся таблица имеет более 100 тысяч строк, если я не ограничу ее в своем методе cur.execute(), страница будет загружаться долго.

Более того, поскольку база данных меняется только раз в месяц, я чувствую, что должны быть более эффективные способы сделать это без подключения и извлечения данных из базы данных каждый раз, когда конечный пользователь заходит на сайт.

Вернуться на верх