Django或Python中的数据库报告服务

时间:2009-04-27 11:35:31

标签: python django reporting-services

我想知道是否有基于django,甚至基于Python的Reporting Services ala JasperReports或SQL Server Reporting Services?

基本上,我希望能够创建报告,将其作为CSV或HTML或PDF格式的电子邮件发送出去,而无需编写报告代码。即使我不得不编写报告代码,我也不介意,但是整个框架与时间表等等都会很好!

PS。我知道我可以使用Django Apps来实现它,但我希望是否有任何集成的解决方案,甚至是Pinax或Satchmo这样的项目,它们汇集了所需的应用程序。

PPS:它必须解决Postgres

2 个答案:

答案 0 :(得分:4)

“我希望能够创建报告......而无需编写报告代码”

我也是。不过,可悲的是,每份报告似乎都是独一无二的,需要自定义代码。

从Django模型到CSV很容易。从一些报告开始。

import csv
from myApp.models import This, That, TheOther
def parseCommandLine():
    # setup optparse to get report query parameters
def main():
    wtr= csv.DictWriter( sys.stdout, ["Col1", "Col2", "Col3"] )
    this, that = parseCommandLine()
    thisList= This.objects.filter( name=this, that__name=that )
    for object in thisList:
        write.writerow( object.col1, object.that.col2, object.theOther.col3 )
if __name__ == "__main__":
    main()

HTML很简单 - Django有一个HTML模板语言。您只需渲染模板并将其写入stdout,而不是render_to_response。有趣的是,算法的核心与编写CSV非常相似。足够相似 - 没有太多聪明 - 你应该有一个设计模式同时做到这两点。

让CSV工作后,使用Django的模板添加HTML。

PDF更难,因为您必须在某些细节上实际制定格式。这有很多Python库。然而,有趣的是,PDF编写的整体模式与CSV和HTML编写非常相似。

通过电子邮件发送意味着直接使用Python的smtplib或Django的email包。这不是太难。所有部分都在那里,您只需要将上面生成的输出文件通过电子邮件发送到某个分发列表。

调度需要一点思考才能充分利用crontab。这可能是这项工作中最难的部分。

答案 1 :(得分:3)

我只是在经过一番调查后才想到我会报告我的发现......

http://code.google.com/p/django-reporting/ - 我认为这个项目看起来像是我需要的很多功能的一个很棒的候选者。不幸的是,它的Django 1.1在撰写本文时(2009年4月29日)尚未发布。至少能够在没有太多代码的情况下创建报告。

http://code.google.com/p/django-cron/ - 看起来很有希望安排没有cron访问的工作

http://www.xhtml2pdf.com/ - 可以使用或ReportLabs PDF库将HTML转换为PDF

所有这些与Django的电子邮件功能一起构成了一个很好的报告系统。

相关问题