deep-river / Ticker

A web-app that synchronizes data between databases and visualizes data using Flask + Echars.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Ticker

A web-app that synchronizes data between databases and visualizes data using Flask + Echars. A project for my 2018 summer internship.


Screenshots of the visualization interface

screenshot01 screenshot01


执行环境:

Python3.6.5  

Python包依赖:

Flask  
Flask-APScheduler  
pymongo  
SQLAlchemy  

模块说明:
-DBConn.py

数据库连接、关闭连接,及增、查操作的封装函数  

-DBConn_config.ini

源数据库[Oracle]及目标数据库[Mongodb]的连接配置文件  

-Main.py

主程序入口  
从目标数据库获取查询语句,然后对源数据库执行查询。查询结果计算后以json格式存入目标数据库[Records]集合。  

-QueryMath.py

Main.py中所需的计算函数  

-SendNotification.py

发送提醒邮件模块  

-Notification_config.ini

SendNotification.py所需的邮箱账号配置文件  

-Ticker-Flask.py

服务器端  
处理数据并与前端页面交互  
定义了路由及api  
设置了默认每隔一个小时执行一次Main.py中的main_func函数  

-templates/Ticker-view.html

前端页面  
由Ticker-Flask.py渲染  
定义了Echarts图表的相关配置  

-static/*

前端页面依赖的js文件  

API说明:

  • */api/v1.0/data/<string:query>/all/

    以Json格式返回<指定类目>中全部数据查询结果
    示例 */api/v1.0/data/A/all/
    */api/v1.0/data/all/all/ 返回全部数据查询结果
    地址区分大小写

  • */api/v1.0/data/<string:query>/<int:numlimit>/

    以Json格式返回<指定类目-指定条数>的数据查询结果
    示例 */api/v1.0/data/A/25
    */api/v1.0/data/all/<int:numlimit>/返回<全部类目-指定条数>的数据查询结果
    地址区分大小写

  • */api/v1.0/data/<string:datefrom>/<string:dateto>/<string:query>/all/

    以Json格式返回<指定日期区间内-指定类目>中全部数据查询结果
    起始日期格式必须为 yyyy-mm-dd,如 2018-10-1、2018-6-6,程序中实际执行时会按该日期的当日00:00:00作为时间戳查询数据库, 即2018-10-1 00:00:00、2018-6-6 00:00:00
    示例 */api/v1.0/data/2018-7-16/2018-7-19/F/all/
    */api/v1.0/data/yyyy-mm-dd/yyyy-mm-dd/all/all/返回<指定日期区间内全部类目>的数据查询结果
    地址区分大小写


Mongodb数据存储:

[Records]集合为主要操作集合,存储60天内所有记录
[Old_records]为旧记录存档,存储180天前到60天前时间段内所有记录
超过180天前的记录会被删除


文件配置说明:

-Notification_config.ini中Method字段为加密方法,参考具体邮件服务提供方的POP3/SMTP/IMAP设置页面,支持STARTTLS,SSL(如:163,QQ等)两种加密方式 Content字段为自定义邮件内容,可缺省

163邮箱配置示例:
[Mail]
Host_server=smtp.163.com
Port=465
Method=SSL
Sender=xxxxxx
Password=xxxxxx
Sender_mail=xxxxxx@163.com
Receiver=xxxxxx@gmail.com, xxxxxx@qq.com
Content=

定时执行参数定义在Ticker-Flask.py的class Config(object)类的JOBS列表中。
'func'字段为定时执行的函数名,
'trigger'为定时执行方式,默认为'interval'即间隔一定时间执行,
'minutes'字段为函数执行间隔,默认定义为每30分钟执行一次,即'minutes': 30 。修改该字段即可自定义执行间隔,如每一小时执行一次则修改为'hours': 1。

About

A web-app that synchronizes data between databases and visualizes data using Flask + Echars.


Languages

Language:Python 73.8%Language:HTML 26.2%