2017-02-20 60 views
1

我有一个Flask应用程序,并在某些时候构造一个复杂的查询并显示带有数据表的结果。这工作正常,但我有一个非常大量的行,所以它需要很长时间来呈现它。我发现我应该为数据表实现端服务器处理,但我无法弄清楚。到目前为止,我发送数据的列表,从蟒蛇到模板是这样的:使用sqlite在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> 

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

+0

从用户界面和性能角度来看,在页面上放置一张巨大的表格通常是一个糟糕的主意。分页或做其他事情。页面上的信息过多只会让人不知所措,并且需要很长时间才能加载。 – reptilicus

回答

0

当你使用数据表数据完全预装前JS代码,将其包装在页眉,分页表,过滤器等,这是它需要很长的时间来加载 - 执行客户端脚本。所以你不能用一些客户端功能来加速它。

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

+0

谢谢。我会试一试瓶分页。这可能会完成这项工作。 – tzoukritzou