2009-04-27 25 views
7

Tôi tự hỏi liệu có bất kỳ dịch vụ báo cáo dựa trên django nào hay thậm chí là Python Based Reporting Services hoặc JasperReports hoặc SQL Server Reporting Services?Dịch vụ báo cáo cơ sở dữ liệu ở Django hoặc Python

Về cơ bản, tôi rất muốn có thể tạo báo cáo, gửi chúng dưới dạng email dưới dạng CSV hoặc HTML hoặc PDF mà không cần phải mã hóa báo cáo. Ngay cả khi tôi phải viết mã báo cáo tôi sẽ không bận tâm, nhưng toàn bộ khuôn khổ với lịch trình và như vậy sẽ là tốt đẹp!

PS. Tôi biết tôi có thể sử dụng Django Apps để làm điều đó, nhưng tôi đã hy vọng nếu có bất kỳ giải pháp tích hợp hoặc thậm chí các dự án như Pinax hoặc Satchmo mà tập hợp các ứng dụng cần thiết.

PPS: Nó sẽ phải làm việc hết Postgres

Trả lời

3

Tôi chỉ nghĩ sau một chút công bằng của cuộc điều tra tôi sẽ báo cáo những phát hiện của tôi ...

http://code.google.com/p/django-reporting/ - Tôi nghĩ rằng dự án này, trông giống như một ứng cử viên tuyệt vời cho rất nhiều các chức năng tôi yêu cầu. Thật không may của nó Django 1.1 mà như văn bản này (29 tháng tư 2009) đã không được phát hành. Ít nhất là trong khả năng tạo ra các báo cáo mà không có quá nhiều mã.

http://code.google.com/p/django-cron/ - Nhìn hứa hẹn cho lịch trình công việc không được tiếp cận cron

http://www.xhtml2pdf.com/ - có thể được sử dụng hoặc ReportLabs PDF Libraries để chuyển đổi HTML sang PDF

Tất cả những cùng với chức năng Email của Django có thể làm cho một báo cáo đẹp Hệ thống.

+1

Nhận xét rất quan trọng: XHML2PDF/Pisa được cấp phép theo GPL – sorin

+0

Giấy phép thương mại hiện tại là 500 EUR. – sorin

+0

Cảm ơn câu trả lời của bạn Sorin –

4

"Tôi rất thích để có thể tạo các báo cáo ... mà không cần phải viết mã các báo cáo"

Vì vậy, sẽ I. Đáng buồn thay, tuy nhiên, mỗi báo cáo có vẻ là duy nhất và yêu cầu mã tùy chỉnh.

Từ mô hình Django sang CSV thật dễ dàng. Bắt đầu với một vài báo cáo của bạn.

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 khá dễ - Django có ngôn ngữ mẫu HTML. Thay vì render_to_response, bạn chỉ cần hiển thị mẫu của bạn và viết nó thành stdout. Và cốt lõi của thuật toán, thú vị, rất giống với việc viết một CSV. Tương tự đủ - mà không có nhiều thông minh - bạn nên có một mẫu thiết kế mà cả hai.

Khi bạn có CSV hoạt động, hãy thêm HTML bằng các mẫu của Django.

PDF khó hơn, vì bạn phải thực sự tìm ra định dạng chi tiết. Có rất nhiều thư viện Python cho việc này. Thật thú vị, tuy nhiên, mô hình tổng thể cho việc viết PDF rất giống với CSV và HTML.

Gửi email có nghĩa là sử dụng gói trực tiếp smtplib của Python hoặc gói email của Django. Đây không phải là quá khó. Tất cả các phần đều có, bạn chỉ cần gửi email các tệp đầu ra được tạo ra ở trên cho một số danh sách phân phối.

Lập lịch cần suy nghĩ một chút để tận dụng tối đa crontab. Điều này - có lẽ - là phần khó nhất của công việc.

+0

Cảm ơn bạn đã trả lời! Nếu tôi quản lý để có được thời gian, tôi có thể bắt đầu một dự án loại pinax/satchmo nhưng để báo cáo! Hãy nghĩ về điều đó! Bạn có crontab, một số ứng dụng văn bản html to pdf, một số loại ứng dụng để lưu trữ chế độ xem dưới dạng báo cáo và cho phép chúng được lên lịch. Nếu bạn có thêm một số ý tưởng, hãy cho tôi biết! –

Các vấn đề liên quan