2017-09-11 1 views
0

기본 DB 시간 초과시 보조 DB에 동적으로 연결할 수있는 방법을 찾고 싶습니다. 나는 광범위하게 재 연구했고 Flask-SQLAlchemy가 아닌 SQLAlchemy만을 사용하는 몇 가지 솔루션을 발견했다. 권장 솔루션은 아래와 같습니다.Flask-SQLAlchemy에서 실패 할 경우 다른 DB에 동적으로 연결

engine1 = create_engine(...) 
engine2 = create_engine(...) 
Session1 = sessionmaker(bind=engine1) 
Session2 = sessionmaker(bind=engine2) 
session1 = scoped_session(Session1, scopefunc=...) 
session2 = scoped_session(Session2, scopefunc=...) 

다음과 같은 오류 안전성을 구축하고 싶습니다. synthax는 가짜 코드입니다.

if not request_has_connection: 
    db = SQLAlchemy(app) # instantiate db with different config that has different db URI. 

문제는 플라스크-SQLAlchemy의 사용자가 별도로 엔진의 인스턴스를, 모든 모델에 사용되는 DB는 모두 내가 어떻게 동적으로 변화 db=SQLAlchemy(app)

하나 줄에서 인스턴스화 허용하지 않는 것입니다 기본 URI가 시간 초과되었거나 연결이 끊어진 경우 보조 데이터베이스에 대한 URI

감사

답변

0

어쩌면 응용 프로그램 공장 (here) 들여다? lazy 메서드를 사용하여 응용 프로그램 인스턴스를 db에 바인딩하면 다른 구성 객체/파일을로드 할 수 있습니다. 프로젝트 구조가 지금 정말로 어떤지 확실하지 -하지만

db = SQLAlchemy() 

같은 한 다음

app = Flask(__name__) 
db.init_app(app) 

체크 아웃 할 후에이 (here) 플라스크 게으른 SQLAlchemy의 설정에 니펫을.