engine.py 4.22 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
# -----------------------------------------------------------------------------


wang zhengwei's avatar
wang zhengwei 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

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

config = yaml.load(open(CFG_FILEPATH, 'r'), Loader=yaml.FullLoader)

pengxiong's avatar
pengxiong committed
26
temp_img_save_folder = work_dir + '/app/templates/temp_img/productionenv/ReportTempImg/'
pengxiong's avatar
pengxiong committed
27
pdf_save_folder = work_dir + '/app/pdf/productionenv/AppHoldReport/'
28 29
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'],
pengxiong's avatar
pengxiong committed
94 95
    db=config[env]['redis']['db'],
    password=config[env]['redis']['password']
pengxiong's avatar
pengxiong committed
96
)
97

wang zhengwei's avatar
wang zhengwei committed
98 99 100 101
redis_host=config[env]['celery']['host'],
redis_port=config[env]['celery']['port'],
redis_db=config[env]['celery']['db'],
redis_password=config[env]['celery']['password']
102

wang zhengwei's avatar
wang zhengwei committed
103 104 105 106 107 108
# 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()