sql_models.py 1.5 KB

1234567891011121314151617181920212223242526272829303132
  1. from sqlalchemy import create_engine, MetaData
  2. from sqlalchemy.orm import sessionmaker, scoped_session
  3. from pymysql.constants.CLIENT import MULTI_STATEMENTS
  4. from config import using_config
  5. import urllib
  6. class DB():
  7. def __init__(self, config=None):
  8. self.config = using_config if not config else config
  9. self.engine = self.DBengine()
  10. self.session = self.DBSession()
  11. self.metadata = MetaData(self.engine)
  12. def DBengine(self):
  13. # 初始化数据库连接:
  14. db_uri = 'mysql+pymysql://' \
  15. '{username}:{password}@{host}:{port}/{database}'.format(username=urllib.parse.quote(self.config['username']),
  16. password=urllib.parse.quote(self.config['password']),
  17. host=self.config['host'],
  18. port=self.config['port'],
  19. database=self.config['database'])
  20. engine = create_engine(db_uri, pool_size=1024, pool_recycle=1800,
  21. pool_pre_ping=True, max_overflow=100, echo=False,connect_args={"client_flag": MULTI_STATEMENTS})
  22. return engine
  23. def DBSession(self):
  24. # 创建DBSession类型:
  25. session_factory = sessionmaker(bind=self.engine)
  26. DBSession = scoped_session(session_factory)
  27. DBSession = DBSession()
  28. return DBSession