使用sqlite在python中实现数据表的服务器端处理

时间:2017-02-20 11:39:28

标签: python sqlite flask datatables server-side-scripting

我有一个Flask应用程序,在某些时候构建一个复杂的查询并使用数据表显示结果。这样可以正常工作,但是我的行数非常多,因此渲染它需要很长时间。我发现我应该为数据表实现副服务器处理,但我无法弄清楚如何。到目前为止,我将python中的数据列表发送到模板中,如下所示:

return render_template('show_entries.html', entries=meas[0])

其中“meas [0]”包含从查询中检索的sqlite中的数据。 在“show_entries.html”中,我正在渲染表格:

<table id="myTable" class="table table-striped" style="width:100%" >  
        <thead>  
          <tr>
        <th>Time</th>
        <th>Mean Current</th>
        <th>Vapour Pressure</th>
        <th>Mean Voltage</th>
        <th>Temperature</th>
        <th>Humidity</th>
        <th>Bar Pressure</th>
        <th>RPM</th>
        <th>Wind Sector</th>
        <th>Wind Speed</th>
        <th>Air Density</th>
        <th>DC Voltage</th>
        <th>Power Sector</th>
        <th>Furling Angle</th>
        <th>Yaw Angle</th>
      </tr>
    </thead>
    <tbody>
        {% for row in  entries  %} 
      <tr>
        <td>{{ row[1] }}</td>
        <td>{{ row[2] }}</td>
        <td>{{ row[3] }}</td>
        <td>{{ row[4] }}</td>
        <td>{{ row[5] }}</td>
        <td>{{ row[6] }}</td>
        <td>{{ row[7] }}</td>
        <td>{{ row[8] }}</td>
        <td>{{ row[9] }}</td>
        <td>{{ row[10] }}</td>
        <td>{{ row[11] }}</td>
        <td>{{ row[12] }}</td>
        <td>{{ row[13] }}</td>
        <td>{{ row[14] }}</td>
        <td>{{ row[15] }}</td>
      </tr>
      {% endfor %}
        </tbody>  
      </table> 

和数据表的javascript:

<script>
$(document).ready(function(){
    $('#myTable').dataTable();
});
</script>

正如我所说,它正确显示数据,但需要很长时间,所以我问是否有人在类似的情况下让它在服务器端工作,因为我尝试了一些我在datatables文档中找到的例子但是我离它不远了。

1 个答案:

答案 0 :(得分:0)

当您使用DataTables时,您的数据会在JS代码将其包装在带有标题,分页,过滤器等的表中之前完全预加载。这是在执行客户端脚本之前加载 - 需要很长时间的地方。所以你无法通过一些客户端功能来加速它。

我建议切换到使用客户端的表数据而不是的服务器端处理:如果你的应用程序使用大量行(超过行数),它会更preferable数百)。有烧瓶插件能够生成具有分页,过滤和搜索的表格。看看Flask-Admin,它可以在服务器端完全生成这样的视图。