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


import logging
import redis
import os
import sys
import yaml
from sqlalchemy import create_engine
赵杰's avatar
赵杰 committed
17
from sqlalchemy.orm import sessionmaker, scoped_session
18 19 20 21

env = sys.argv[-1]
work_dir = os.getcwd()
CFG_FILEPATH = work_dir + '/app/config/config.yaml'
22 23
template_folder = work_dir+'/app/templates'
pdf_folder = work_dir+'/app/pdf/'
24 25 26

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

27 28

tamp_product_engine = create_engine(
29
    'mysql+pymysql://{user}:{password}@{host}:{port}/{db}?charset={charset}'.format(
30
        db=config[env]['MySQL']['tamp_product_db'],
31 32 33 34
        host=config[env]['MySQL']['host'],
        port=config[env]['MySQL']['port'],
        user=config[env]['MySQL']['user'],
        password=config[env]['MySQL']['password'],
35 36 37 38 39 40
        charset="utf8"
    ),
    max_overflow=0,  # 超过连接池大小外最多创建的连接
    pool_size=100,  # 连接池大小
    pool_timeout=5,
    pool_recycle=600
41
)
42
tamp_order_engine = create_engine(
43
    'mysql+pymysql://{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 51 52 53 54
        charset="utf8"
    ),
    max_overflow=0,  # 超过连接池大小外最多创建的连接
    pool_size=100,  # 连接池大小
    pool_timeout=5,
    pool_recycle=600
55
)
56 57 58 59 60 61 62 63 64

tamp_user_engine = create_engine(
    'mysql+pymysql://{user}:{password}@{host}:{port}/{db}?charset={charset}'.format(
        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"
65 66 67 68 69
    ),
    max_overflow=0,  # 超过连接池大小外最多创建的连接
    pool_size=100,  # 连接池大小
    pool_timeout=5,
    pool_recycle=600
70
)
李宗熹's avatar
李宗熹 committed
71 72 73 74 75 76 77 78 79

tamp_fund_engine = create_engine(
    'mysql+pymysql://{user}:{password}@{host}:{port}/{db}?charset={charset}'.format(
        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"
80
    )
李宗熹's avatar
李宗熹 committed
81
)
wang zhengwei's avatar
wang zhengwei committed
82 83 84 85 86 87 88 89 90 91 92

tamp_order_engine = create_engine(
    'mysql+pymysql://{user}:{password}@{host}:{port}/{db}?charset={charset}'.format(
        db=config[env]['MySQL']['tamp_order_db'],
        host=config[env]['MySQL']['host'],
        port=config[env]['MySQL']['port'],
        user=config[env]['MySQL']['user'],
        password=config[env]['MySQL']['password'],
        charset="utf8"),
    echo=True
)
李宗熹's avatar
李宗熹 committed
93 94 95
# tamp_product_session = scoped_session(sessionmaker(bind=tamp_product_engine))()
# tamp_order_session = scoped_session(sessionmaker(bind=tamp_order_engine))()
# tamp_user_session = scoped_session(sessionmaker(bind=tamp_user_engine))()
96 97 98 99 100 101 102 103 104 105 106 107 108 109

# redis = redis.StrictRedis(
#     host=config[env]['redis']['host'],
#     port=config[env]['redis']['port'],
#     db=config[env]['redis']['db']
# )

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']
                    )

李宗熹'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()