dbReport’s Documentation

The dbReport package will generate HTML reports from a sqlite database. It uses views defined in the database to collect the data for the reports, and a JSON file to configure how the reports are generated and related to each other. The project can be found on github

Installation

This project is not hosted on PyPi, so to install it will require building the project from source.

Since this module has several sub-modules (js plugins), to clone, perform the following steps to clone it with all the sub-modules populated.

>> git clone https://github.com/josephjcontreras/dbreport.git
>> cd dbReport
>> git submodule init
>> git submodule update

For further details about submodules, refer to the git documentation.

Once cloned, install the requirements by running pip install -r requirements.txt or pip install -r requirements-dev.txt, depending on how you will use the project.

Example Setup

Once dbReport has been installed, it can be used to start generating reports.

{
"paths": {
    "database": ".\\test-database.db",
    "report_dir": ".\\reports"
    }
}

For simple cases that do not require processing of data queried from the database, the reports can be rendered as shown.

def main():
    report = Report('layout.json')
    report.render(parse=False)

In other cases where the parse function is required, create a python class that inherits from the dbreport.Report class. This will allow the parse method to be overloaded and changed.

from dbreport import Report

class myCustomReport(Report):
    def __init__(self, layout_path):
        super().__init__(layout_path=layout_path)

    def parse(self, data):
        """
        This custom parse function will be called on the data

        See documentation for more details.
        """

        # for this case, we're just going to print the data to
        # show that it is working
        print(data)

        # be sure to return the data
        return data


def main():
    # use this function to instantiate the class and generate reports
    report = myCustomReport('layout.json')
    report.render()

After running these examples, there will be an html report for each view defined in test-database.db.