flask-sqlalchemy с динамическими подключениями к базе данных

#sqlalchemy #flask #flask-sqlalchemy

#sqlalchemy #flask #flask-sqlalchemy

Вопрос:

У меня есть одна основная база данных, в которой хранится собственное соединение с базой данных каждого клиента. Таким образом, каждый клиент работает с 2 БД: основной и собственной БД, подключение к которой должно определяться для каждого http-вызова. Как я могу это сделать, используя расширение flask-sqlalchemy или может быть чисто в sqlalchemy?

Комментарии:

1. Эти две базы данных используют одни и те же данные?

Ответ №1:

Вы можете обрабатывать несколько сеансов в Flask-SQLAlchemy:

 engine = create_engine(DATABASE_URI)
db_session = scoped_session(sessionmaker(autocommit=False,
                                     autoflush=False,
                                     bind=engine))
db_session.query...()
  

и

 engine2 = create_engine(DATABASE_URI2)
db_session2 = scoped_session(sessionmaker(autocommit=False,
                                     autoflush=False,
                                     bind=engine2))

db_session2.query2...()
  

совместное использование одной и той же кодовой базы.

Комментарии:

1. этот код отражает не то, как это было бы сделано с помощью Flask-SQLAlchemy, а, в частности, непосредственно с помощью SQLAlchemy.

2. Верно, код предназначен только для простой SQLAlchemy, но вопрос не касался использования Flask-SQLAlchemy. В любом случае заставить его работать с оболочкой должно быть легко. Кроме того, вы также можете использовать оба в одной и той же кодовой базе.