2009-04-27 10 views
7

Zastanawiam się, czy istnieją jakieś oparte na Django, a nawet usługi raportowania oparte na Pythonie, takie jak JasperReports lub SQL Server Reporting Services?Usługi raportowania baz danych w Django lub Pythonie

Zasadniczo chciałbym móc tworzyć raporty, wysyłać je jako e-maile w formacie CSV lub HTML lub PDF bez konieczności kodowania raportów. Nawet jeśli będę musiał kodować raport, nie miałbym nic przeciwko temu, ale cała struktura z harmonogramami i tak dalej byłaby miła!

PS. Wiem, że mogłem użyć Django Apps, ale miałem nadzieję, że istnieją jakieś zintegrowane rozwiązania, a nawet projekty takie jak Pinax lub Satchmo, które łączy potrzebne aplikacje.

PPS: Musiałby to odpracować Postgresa

Odpowiedz

3

Pomyślałem po uczciwej trochę dochodzenia byłoby zgłosić moje wyniki ...

http://code.google.com/p/django-reporting/ - Myślę, że ten projekt, wygląda awesome kandydata na alot funkcjonalności wymagam. Niestety jego Django 1.1, który na tym piśmie (29 kwietnia 2009) nie został wydany. Co najmniej w możliwości tworzenia raportów bez zbytniego kodu.

http://code.google.com/p/django-cron/ - wyglądają obiecująco dla szeregowania zadań bez dostępu cron

http://www.xhtml2pdf.com/ - Może być używany lub ReportLabs PDF biblioteki do konwersji HTML do PDF

Wszystko to, wraz z funkcjonalnością E Django mógłby zrobić ładny Raportowanie System.

+1

Bardzo ważna uwaga: XHML2PDF/Pisa jest licencjonowana na licencji GPL – sorin

+0

Licencja komercyjna wynosi obecnie 500 EUR. – sorin

+0

Dzięki za odpowiedzi Sorin –

4

„Chciałbym, aby móc tworzyć raporty ... bez konieczności kodowania raporty”

więc I. Niestety, jednak każdy raport wydaje się być unikalny i wymaga niestandardowego kodu.

Od modelu Django do CSV jest łatwe. Zacznij tam z kilkoma raportami.

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 jest całkiem łatwy - Django ma język szablonów HTML. Zamiast render_to_response, po prostu wyrenderuj szablon i zapisz go na standardowe wyjście. A co ciekawe, rdzeń algorytmu jest bardzo podobny do pisania pliku CSV. Podobny do tego - bez dużej sprytu - powinieneś mieć wzór, który spełnia oba te warunki.

Po uruchomieniu pliku CSV dodaj kod HTML za pomocą szablonów Django.

Pliki PDF są trudniejsze, ponieważ trzeba szczegółowo opracować formatowanie. Istnieje wiele bibliotek Pythona. Co ciekawe, ogólny wzór pisania PDF jest bardzo podobny do pisania CSV i HTML.

Wysyłanie wiadomości e-mail oznacza użycie Pythona smtplib bezpośrednio lub pakietu Django email. To nie jest zbyt trudne. Wszystkie elementy są tam, wystarczy wysłać pocztą e-mail pliki wyjściowe wyprodukowane powyżej do pewnej listy dystrybucyjnej.

Planowanie wymaga trochę myślenia, aby jak najlepiej wykorzystać crontab. To - być może - jest najtrudniejszą częścią pracy.

+0

Dzięki za odpowiedź! Jeśli uda mi się zdobyć czas, mogę rozpocząć projekt typu pinax/satchmo, ale do raportowania! Pomyśl o tym! Masz crontab, trochę aplikacji do pisania html do pdf, jakąś aplikację do przechowywania widoków jako raportów i do ich zaplanowania. Jeśli masz więcej pomysłów, daj mi znać! –

Powiązane problemy