Package: treport
БиблиотекаtreportНазначение библиотекиБиблиотекаtreportпредназначена для формирования отчетов, имеющих исключительно табличное представление
и фиксированное количество колонок. Результат формирования отчета выводится в форматеMS Excel.Установка зависимостейДля работы библиотеки требуется установить следующие пакеты:lxml >= 4.8.0Jinja2 >= 3.1.2openpyxl >= 3.0.10postgres >= 4.0Файл, в котором хранится информация о все необходимых пакетах, можно скачать поссылке.
Для установки всех требуемых пакетов необходимо выполнить командуpipinstall-rrequirements.txtУстановка библиотекиУстановить библиотеку можно, выполнив командуpipinstalltreportИли скачать проект сGitHub.Использование библиотекиПодготовительные мероприятияПеред использованием библиотеки рекомендуется создать рабочий каталог, где будут размещаться файлы с SQL-запросами
к базе данных, шаблоны отчетных форм, описание параметров формирования отчетов, описание параметров подключения
к базе данных. Для удобства внутри рабочего каталога можно создать другие каталоги, где можно было бы размещать файлы
SQL-запросов, файлы шаблонов отчетов и т.п.Пример, демонстрирующий работу библиотекиПример, демонстрирующий работу библиотеки, можно увидеть, перейдя поссылке.
В качестве примера рабочего каталога был создан каталогtreport_example. Внутри него были размещены следующие файлы:run_report.xml- декларативное описание параметров формирования отчетных форм;run_report.ini- ini-файл, в котором прописаны параметры подклбчения к базе данных и путь к файлуrun_report.xmlrun_report.py- программа на языке программированияPython, демонстрирующая использование библиотеки.Внутри каталогаtreport_exampleразмещаются следующие каталоги:sql- каталог для хранения файлов с SQL-запросами, которые формируют контент отчета;templates- каталог для хранения файлов шаблонов отчетных форм;out- каталог для хранения файлов сформированных отчетов.Для демонстрации работы библиотеки необходимо иметь возможность подключения к базе данныхPostgreSQL.
Необходимо создать таблицуdocuments.-- documents definitionCREATETABLEdocuments(idint8NOTNULLGENERATEDALWAYSASIDENTITY,docnumvarcharNOTNULL,docdatedateNOTNULL,docsumnumericNOTNULL,docsum2numericNOTNULL);Содержимое таблицы представлено в файлеdocuments.csv.
Для импорта данных из CSV-файла необходимо выполнить командуcopydocuments(docnum,docdate,docsum,docsum2)from'/path/to/documents.csv'delimiter';'csvheader;Подготовка шаблона отчетаШаблон отчета- это файл в форматеxlsx. Отчет может состоять из нескольких листов.
Нужно иметь в виду, что данная библиотека позволяет формировать отчетные формы, которые имеютисключительно табличный вид. Отчет может содержать формулы MS Excel. В этом случае
необходимо в SQL-запросе предусмотреть выводить в данной колонке пустого значения, а
XML-файле, описывающем свойства отчета, указать номера колонок, которые необходимо
игнорировать при формировании отчета.Подготовка SQL-файлаДля получения данных из БД необходимо подготовить файл с SQL-запросом.
Для каждого листа отчета необходимо подготовить свой файл.
Если требуется формировать отчет по заданным параметрам, то необходимо чтобы
значения этих параметров были переданы в SQL-запрос. Для этого в тексте SQL-запроса
параметры обрамляются двойными фигурными скобками (например{{ p_start_date }}).Подготовка ini-файлаНеобходимо подготовить ini-файл, в котором описываются параметры подключение к базе данных и путь к декларативному
описанию свойств отчетов.Пример ini-файла.[database]login=sergejnovikovpassword=port=5432host=localhostdatabase=postgres[report]params_reports=run_report.xmlСекцияdatabase- описываются параметры подключения к БД.Список параметров:login- имя пользователя для подключения к БД;password- пароль пользователя для подключения к БД;port- порт, по которому происходит подключение к БД;host- адрес хоста, на котором размещается СУБД PostgreSQL;database- наименование БД.Секцияreport- описывает параметры отчетных форм.В данной секции пока только один параметр-params_reports. Значение параметра- путь к файлу,
в котором приведено описание свойств отчетных форм.Декларативное описание отчетаОтчет состоит из двух основных частей- SQL-запроса к базе данных и шаблона, описывающего его внешний вид.Для того чтобы библиотека понимала какие параметры допустимы для формирования отчета, какой шаблон использовать
для формирования отчета, какой SQL-запрос является источником данных для страницы отчета и т.д. необходимо
описать характеристики отчетов.Свойства отчета описываются в файле в формате XML. Правило описания свойства
отчетов приведено вдокументации.
Файл сXSD-схемойможно скачать со страницы проекта.Формирование отчетаС использованием программы на PythonnПосле того как подключение к БД настроено, разработаны SQL-запросы, подготовлен шаблон отчета,
можно приступить к написанию скрипта, который вызовет библиотеку и сформирует отчет.fromtreport.reportimportReport,get_configif__name__=='__main__':parameters={'p_start_date':'01.05.2022','p_end_date':'31.05.2022'}db_url,path_to_params_reports_file=get_config('run_report.ini')report=Report('treport_example',path_to_params_reports_file,parameters,db_url)ifreport.isCorrect:report.contentReport.save(report.outDir+report.report_file_name)report.logger.info(f'Файл{report.outDir+report.report_file_name}сохранен')В переменнойparametersхранятся параметры формирования отчета
и их значения.db_url, path_to_params_reports_file = get_config('run_report.ini')-
вызывается функцияget_config, аргумент функции- путь к ini-файлу,
возвращается URL  подключения к БД и путь к XML-файлу, описывающему свойства
отчетов.Далее создается объект ```report``. В конструктор класса передаются код формируемого отчета,
путь к XML-файлу, описывающему свойства отчетов, параметры формирования отчета и URL подключения к БД.Далее происходит проверка на предмет того соответствует ли XML-файл XSD-схеме.
Если соответствует, то происходит сохранение файла отчета на файловую систему.Из командной строкиДля формирования отчета из командной строки необходимо выолнить командуpython-mtreport--report<кодотчета>--config<ini-файл>--parameters-file<файлспараметрамиотчета>--parameters<параметрыотчета>Аргументы командной строки:--help- выводит помощь с описанием списка аргументов;--report- код отчета, который необходимо сформировать;--config- наименование конфигурационного файла, если параметр не указан, то
в текущем каталоге ищется файлtreport.ini;--parameters-file- имя файла, в котором хранятся значения, в качестве разделителя
используется символ "=";--parameters- список передаваемых параметров, указывается в кавычках,
в качестве разделителя используется символ ":".Пример 1python-mtreport--reporttreport_example--parameters"p_start_date:01.04.2022;p_end_date:31.05.2022"Будет сформирован отчетtreport_exampleза период с 01.04.2022 по 31.05.2022,
параметры подключения к базе данных и имя XML-файла будут прочитаны из
файлаtreport.ini. Если такой файл в рабочем каталоге будет отсутствовать,
то формирование отчета будет прервано.Пример 2python-mtreport--reporttreport_example--configrun_report.ini--parameters"p_start_date:01.04.2022;p_end_date:31.05.2022"Параметры формирование отчета аналогичные параметрам в Примере 1, параметры подключения к базе данных и имя XML-файла будут прочитаны из
файлаrun_report.ini.Пример 3python-mtreport--reporttreport_example--parameters-filerun_report_params.txtПараметры подключения к базе данных и имя XML-файла будут прочитаны из
файлаtreport.ini, параметры формирования отчета - из файлаrun_report_params.txt.Пример 4python-mtreport--reporttreport_example--parameters-filerun_report_params.txt--parameters"p_end_date:31.05.2022"Параметры подключения к базе данных и имя XML-файла будут прочитаны из
файлаtreport.ini, параметры формирования отчета - из файлаrun_report_params.txt,
но более приоритетным значением будет значение, указанное в качестве значения
параметра--parameters(дата окончания условий отбора будет установлена
"31.05.2022", вне зависимости от того, какой значенние этого параметра указано
в файле).Пример 5python-mtreport--helpВ результате выполннения команды бужет отображена следующая информацияusage:__main__.py[-h][-cCONFIG][-rREPORT][-pfPARAMETERS_FILE][-pPARAMETERS]Программапредназначенадляформированияотчетов,имеющихтабличноепредставление

optionalarguments:-h,--helpshowthishelpmessageandexit-cCONFIG,--configCONFIGУказываетсяпутьконфигурационномуфайлу-rREPORT,--reportREPORTКодформируемогоотчета-pfPARAMETERS_FILE,--parameters-filePARAMETERS_FILEФайлспараметрамиотчета-pPARAMETERS,--parametersPARAMETERSПараметрыотчета.Например:"param_name1:value_param1;param_name2:value_param2"