1234567891011121314151617181920212223242526272829303132 |
- 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
|