我有一个加载大约 100k 行数据的网格,结果约为 20MB。为了获取这些数据,我们目前正在做这样的事情:
cursor.execute(sql)
data = cursor.fetchall()
return HttpResponse(data.json())
然后我们将在 JavaScript 中使用
JSON.parse
将该数据加载到网格中。从端到端,将数据从数据库获取到网格的最快方法是什么(需要注意的是,我们不允许在前端 javascript 代码中使用 sql 请求)?
我想到的可能的解决方案是:
我不关心消息的大小,我只关心将该数据显示到前端的端到端时间。基本上,最终用户需要多长时间才能得到响应。
(请注意,我不关心将数据分成块,这是一个非常具体的用例,用户要求将所有数据加载到 html 表中)
我最近做了类似的事情,通过 MQTT 接收大型 protobuf 序列化消息,现在以 HTML 表格格式将其显示给用户。
我编写了 MessageToTable,它接收 protobuf 消息并从中吐出一个 HTML 表格。
示例:
from example_pb2 import ExampleMessage
response_message = ExampleMessage()
# parse from string, etc..
utils.MessageToTable(response_message, show_empty=False, tablefmt='html')
您可以在此处看到此操作
如果您有嵌套表,tabulate会将
<
和>
转换为文字字符串,您可以通过使用tablefmt='unsafehtml'
来克服这个问题