Что у меня: несколько идентичных баз данных и установка SQL-Alchemy.Обслуживание страницы с несколькими базами данных
Что мне нужно для достижения: единственная функция «Колба», способная запросить все данные. Все остальные функции должны иметь доступ только к одной из баз данных.
БД уже существуют, и я загружаю данные из них.
Первоначально я использовал только слой абстракции SQL-Alchemy, без какой-либо модели Flask. Вот как выглядел код:
app = Flask(__name__)
app.config.from_object('myflaskapp.config.settings')
metadata = None
def connect_db():
engine = create_engine(app.config['DATABASE_URI'])
global metadata
metadata = MetaData(bind=engine)
return engine.connect()
@app.before_request
def before_request():
g.db = connect_db()
@app.after_request
def after_request(response):
close_connection()
return response
DATABASE_URI, указанный в settings.py. Я думаю, не имеет значения, однако основной БД является сервером Mysql и DATABASE_URI выглядит следующим образом:
DATABASE_URI = 'mysql://' + dbuser + ':' + dbpass + '@' + dbhost + '/' +dbname
Приведенный выше код позволяет мне написать что-то вроде этого:
myTable = Table('branch', metadata, autoload=True)
myBranch = select([myTable])
что весьма удобно. Этот подход работает отлично, если только мне не приходится иметь дело с более чем одной БД. Чтобы быть более точным, я хотел бы показать (из той же функции) данные, принадлежащие нескольким БД, которые имеют точно такую же структуру. Это означает, что один и тот же запрос может успешно выполняться снова с любой БД. В псевдокоде:
@app.route('/summary')
def summary():
....
allData = []
for db in all_of_my_dbs:
allData.append(db.query())
....
sendToTemplate(allData)
Это что-то выполнимое? Возможно ли это? Спасибо.
Я уже видел эту ссылку по причинам, которые теперь ускользнули от меня, и я думал, что это не соответствует моим потребностям. Попробует завтра. Спасибо за ответ. –
Похоже, что он делает –
Похоже, это не то, что мне нужно. Или, по крайней мере, я не могу понять, как связать намеки, содержащиеся на этой странице, с тем, что мне нужно. –