engine.py 4.2 KB
Newer Older
1 2 3 4 5 6 7 8 9 10
# -*- encoding: utf-8 -*-
# -----------------------------------------------------------------------------
# @File Name  : app.py
# @Time       : 2020/11/18 下午12:45
# @Author     : X. Peng
# @Email      : acepengxiong@163.com
# @Software   : PyCharm
# -----------------------------------------------------------------------------


pengxiong's avatar
pengxiong committed
11
import logging
12 13 14 15 16
import redis
import os
import sys
import yaml
from sqlalchemy import create_engine
赵杰's avatar
赵杰 committed
17
from sqlalchemy.orm import sessionmaker, scoped_session
pengxiong's avatar
pengxiong committed
18
from sqlalchemy.pool import NullPool
19

pengxiong's avatar
pengxiong committed
20
env = sys.argv[-1] if sys.argv[-1] in ["dev", "test", "prod"] else "test"
21 22 23
work_dir = os.getcwd()
CFG_FILEPATH = work_dir + '/app/config/config.yaml'

wang zhengwei's avatar
wang zhengwei committed
24
config = yaml.load(open(CFG_FILEPATH, 'r'), Loader=yaml.FullLoader)
pengxiong's avatar
pengxiong committed
25 26 27 28 29

temp_img_save_folder = work_dir + '/app/templates/temp_img/productionenv/ReportTempImg/'
pdf_save_folder = work_dir + '/app/pdf/productionenv/AppHoldReport/'
template_folder = config[env]['oss']['imgs_url_prefix']
pdf_folder = config[env]['oss']['pdf_url_prefix']
30 31

tamp_product_engine = create_engine(
32
    'mysql+mysqldb://{user}:{password}@{host}:{port}/{db}?charset={charset}'.format(
33
        db=config[env]['MySQL']['tamp_product_db'],
34 35 36 37
        host=config[env]['MySQL']['host'],
        port=config[env]['MySQL']['port'],
        user=config[env]['MySQL']['user'],
        password=config[env]['MySQL']['password'],
38 39
        charset="utf8"
    ),
pengxiong's avatar
pengxiong committed
40
    poolclass=NullPool
41
)
42
tamp_order_engine = create_engine(
43
    'mysql+mysqldb://{user}:{password}@{host}:{port}/{db}?charset={charset}'.format(
44
        db=config[env]['MySQL']['tamp_order_db'],
45 46 47 48
        host=config[env]['MySQL']['host'],
        port=config[env]['MySQL']['port'],
        user=config[env]['MySQL']['user'],
        password=config[env]['MySQL']['password'],
49 50
        charset="utf8"
    ),
pengxiong's avatar
pengxiong committed
51
    poolclass=NullPool
52
)
53 54

tamp_user_engine = create_engine(
55
    'mysql+mysqldb://{user}:{password}@{host}:{port}/{db}?charset={charset}'.format(
56 57 58 59 60 61
        db=config[env]['MySQL']['tamp_user_db'],
        host=config[env]['MySQL']['host'],
        port=config[env]['MySQL']['port'],
        user=config[env]['MySQL']['user'],
        password=config[env]['MySQL']['password'],
        charset="utf8"
62
    ),
pengxiong's avatar
pengxiong committed
63
    poolclass=NullPool
64
)
李宗熹's avatar
李宗熹 committed
65 66

tamp_fund_engine = create_engine(
67
    'mysql+mysqldb://{user}:{password}@{host}:{port}/{db}?charset={charset}'.format(
李宗熹's avatar
李宗熹 committed
68 69 70 71 72 73
        db=config[env]['MySQL']['tamp_fund_db'],
        host=config[env]['MySQL']['host'],
        port=config[env]['MySQL']['port'],
        user=config[env]['MySQL']['user'],
        password=config[env]['MySQL']['password'],
        charset="utf8"
pengxiong's avatar
pengxiong committed
74
    ),
pengxiong's avatar
pengxiong committed
75
    poolclass=NullPool
wang zhengwei's avatar
wang zhengwei committed
76
)
77

赵杰's avatar
赵杰 committed
78 79 80 81 82 83 84 85
tamp_diagnose_app_engine = create_engine(
    'mysql+mysqldb://{user}:{password}@{host}:{port}/{db}?charset={charset}'.format(
        db=config[env]['MySQL']['tamp_diagnose_app_db'],
        host=config[env]['MySQL']['host'],
        port=config[env]['MySQL']['port'],
        user=config[env]['MySQL']['user'],
        password=config[env]['MySQL']['password'],
        charset="utf8"
pengxiong's avatar
pengxiong committed
86 87
    ),
    poolclass=NullPool
赵杰's avatar
赵杰 committed
88 89 90
)


pengxiong's avatar
pengxiong committed
91 92 93
redis = redis.StrictRedis(
    host=config[env]['redis']['host'],
    port=config[env]['redis']['port'],
wang zhengwei's avatar
wang zhengwei committed
94 95
    db=config[env]['redis']['db'],
    password=config[env]['redis']['password']
pengxiong's avatar
pengxiong committed
96
)
97

pengxiong's avatar
pengxiong committed
98 99 100 101 102 103 104 105 106 107 108
redis_host=config[env]['redis']['host'],
redis_port=config[env]['redis']['port'],
redis_db=config[env]['redis']['db'],
redis_password=config[env]['redis']['password']

logging.basicConfig(level=logging.INFO,
                    filename=work_dir + config[env]['log']['filename'],
                    filemode=config[env]['log']['filemode'],
                    format=config[env]['log']['format'],
                    datefmt=config[env]['log']['datefmt']
                    )
109

李宗熹's avatar
李宗熹 committed
110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
class TAMP_SQL(object):
    """[sqlalchemy 封装]

    Args:
        object ([type]): [description]

    Returns:
        [type]: [description]
    """

    def __init__(self, db_engine):
        # 创建DBSession类型:
        self.DBSession = scoped_session(sessionmaker(bind=db_engine))
        self.session = self.DBSession()

    def __enter__(self):
        return self

    def __exit__(self, exc_type, exc_val, exc_tb):
        try:
            self.session.commit()
        except:
            self.session.rollback()
        finally:
            self.session.close()