使用Python生成JSON数据
我正在做一个小项目,目标是从数据库生成一个报告,服务器使用的数据库是SQLite,里面有像“连接”、“下载”等表。
我制作的报告最终会包含一些图表,展示比如“每天的连接数”、“这个月的热门下载”等内容。
我打算使用flot来制作图表,因为它生成的图表看起来非常好看:
这是我目前的报告工作计划:
一个静态的.HTML文件,这个文件就是报告。里面会有标题、嵌入的flot图表等等。
一个JSON数据文件。这些文件将由我的报告生成Python脚本生成,基本上会为每个图表包含一个JSON变量,表示图表应该映射的数据集。比如说([100,2009-2-2],[192,2009-2-3]...)
报告生成的Python脚本,这个脚本会加载SQLite数据库,运行一系列预设的SQL查询,然后输出JSON数据文件。
这样的设置听起来合理吗?我总觉得可以改进,但又不知道怎么改。我希望报告是静态的。运行它们的服务器承受不了重负载,所以动态生成报告不太可能,而且对于这个应用来说也没必要。
我有以下担忧:
我觉得这个Python脚本大部分是没什么用的,所有的处理都是由SQLite完成的,我的脚本基本上只是用来存储SQL查询和打包输出。再多花点功夫,SQLite可能就能自己做到这些。
我感觉我在解决一个已经被解决过很多次的问题,“拿SQL查询,生成漂亮的图表在每日报告中”这样的事情应该已经做过成百上千次了。我只是找不到任何广泛的实现方式。
2 个回答
这听起来很合理。
- 你需要一种编程语言来和SQLite进行交流。你可以用C语言来做这件事,但如果你能用Python轻松写出所需的代码,那为什么不呢?你花在写代码上的时间,肯定会比因为没有最有效的程序而浪费的时间要少。
- 确实有一些程序可以帮你分析日志,比如我听说过Piwik。这个是用来生成动态报告的,当然也有项目可以生成静态报告。不过,这些工具可能不完全符合你需要的数据和输出。自己写代码的话,你就能完全掌控结果,所以如果工作量不大,就继续吧。
我觉得这个Python脚本基本上没什么意义,所有的处理都是由SQLite来完成的,我的脚本主要是用来存储SQL查询和整理输出。再多花点功夫,SQLite可能也能做到这些。
也许是这样,但即便如此,Python还是个很好的“胶水”语言。还有,如果你需要做一些SQLite不擅长的处理,Python已经可以帮你解决这个问题了。
我感觉我在解决一个已经被很多人解决过的问题,“拿SQL查询,输出漂亮的图表到日报”这种事情应该已经做过成百上千次了。我只是找不到任何广泛的实现方案。
我觉得你可能在朝着一种通用的HTTP报告方向发展。有一个和你问题相关的东西是Django,它提供了一个Python接口,可以在数据库(支持SQLite)和网页服务器之间进行交互,还有一个模板系统可以用来处理你的输出。
如果你只想要解决方案中的一两个部分,我建议你看看SQLAlchemy,它可以用来和数据库交互;还有Jinja2,用于模板处理;或者Werkzeug,用于HTTP服务器接口。