# coding=utf-8 from sqlalchemy import create_engine try: from loguru import logger except ImportError: import logging logger = logging.getLogger(__name__) def get_db_engine(**kwargs): uri_format = 'mysql+pymysql://%s:%s@%s:%s/%s?charset=%s' try: dbname = kwargs.get('name', '') passwd = kwargs.get('password', '') port = kwargs.get('port', '3306') user = kwargs.get('user', '') host = kwargs.get('host', '') charset = kwargs.get('charset', 'UTF8MB4') connect_uri = uri_format % (user, passwd, host, port, dbname, charset) db = create_engine(connect_uri, echo=False, pool_recycle=3600, pool_pre_ping=True) return db except Exception as e: logger.error('Connect Error happens : %s' % e) def ssh_get_db_engine(**kwargs): from sshtunnel import SSHTunnelForwarder uri_format = 'mysql+pymysql://%s:%s@%s:%s/%s?%s' try: host = kwargs.get('host', '') port = kwargs.get('port', '3306') ssh_port = kwargs.get('ssh_port', '') ssh_user = kwargs.get('ssh_user', '') ssh_passwd = kwargs.get('ssh_password', '') server = SSHTunnelForwarder( (host, ssh_port), ssh_password=ssh_passwd, ssh_username=ssh_user, remote_bind_address=('127.0.0.1', port) ) dbname = kwargs.get('name', '') passwd = kwargs.get('password', '') user = kwargs.get('user', '') charset = kwargs.get('charset', 'utf8') connect_uri = uri_format % (user, passwd, '127.0.0.1', server.local_bind_port, dbname, charset) db = create_engine(connect_uri) return db except Exception as e: logger.error('Connect Error happens : %s' % e)