from sqlalchemy import create_engine, MetaData from sqlalchemy.orm import sessionmaker, scoped_session from pymysql.constants.CLIENT import MULTI_STATEMENTS from config import using_config import urllib class DB(): def __init__(self, config=None): self.config = using_config if not config else config self.engine = self.DBengine() self.session = self.DBSession() self.metadata = MetaData(self.engine) def DBengine(self): # 初始化数据库连接: db_uri = 'mysql+pymysql://' \ '{username}:{password}@{host}:{port}/{database}'.format(username=urllib.parse.quote(self.config['username']), password=urllib.parse.quote(self.config['password']), host=self.config['host'], port=self.config['port'], database=self.config['database']) engine = create_engine(db_uri, pool_size=1024, pool_recycle=1800, pool_pre_ping=True, max_overflow=100, echo=False,connect_args={"client_flag": MULTI_STATEMENTS}) return engine def DBSession(self): # 创建DBSession类型: session_factory = sessionmaker(bind=self.engine) DBSession = scoped_session(session_factory) DBSession = DBSession() return DBSession