database.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. # -*- coding: utf-8 -*-
  2. import sqlalchemy
  3. from sqlalchemy import create_engine
  4. from sqlalchemy.ext.declarative import declarative_base
  5. from sqlalchemy.orm import sessionmaker
  6. from config import settings
  7. mysql_dwd_config = {
  8. 'drivername': 'mysql+pymysql',
  9. 'username': settings.MYSQL_USER,
  10. 'password': settings.MYSQL_PASSWORD,
  11. 'host': settings.MYSQL_SERVER,
  12. 'port':settings.MYSQL_PORT,
  13. 'database': settings.MYSQL_DB_NAME
  14. }
  15. if sqlalchemy.__version__ >= '1.4':
  16. mysql_engine_url = sqlalchemy.engine.URL.create(**mysql_dwd_config)
  17. mysql_engine_url = mysql_engine_url.update_query_dict({'charset': 'utf8mb4'})
  18. else:
  19. mysql_engine_url = '{drivername}://{username}:{password}@{host}:{port}/{database}?charset=utf8mb4'.format(**mysql_dwd_config)
  20. engine = create_engine(mysql_engine_url, echo=False, pool_size=100, pool_recycle=3600, pool_pre_ping=True)
  21. SessionLocal = sessionmaker(bind=engine)
  22. Base = declarative_base()
  23. # Dependency
  24. def get_db():
  25. try:
  26. db = SessionLocal()
  27. yield db
  28. finally:
  29. db.close()
  30. def get_db_local():
  31. return SessionLocal()
  32. #from database import engine
  33. #from models.oneshare_base import Base
  34. #from models.knowledge_base import Base
  35. #
  36. # #使用Base的metadata和engine来创建所有表
  37. #Base.metadata.create_all(bind=engine)