from flask import current_app, has_app_context
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import create_engine
from sqlalchemy.engine import Engine
from app.config import config
db = SQLAlchemy()
def exchange_db(db_name: str):
"""
切换数据库
:param db:数据
:return:
"""
if has_app_context():
app = current_app
rel = app.config['SQLALCHEMY_BINDS'][db_name]
app.config['SQLALCHEMY_DATABASE_URI'] = rel
return db
else:
return create_engine_db(db_name)
def create_engine_db(site_name='us') -> Engine:
if has_app_context():
return db.engines.get(site_name)
else:
url = config['default'].SQLALCHEMY_BINDS.get(site_name)
return create_engine(url)