Наиболее эффективный способ извлечения данных из базы данных 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()
, страница будет загружаться долго.
Более того, поскольку база данных меняется только раз в месяц, я чувствую, что должны быть более эффективные способы сделать это без подключения и извлечения данных из базы данных каждый раз, когда конечный пользователь заходит на сайт.