Dish_Recognition/dao/dbutils.py

56 lines
1.7 KiB
Python

# 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)