私が持っているもの: 複数の同一のデータベースと SQL-Alchemy のセットアップ。
私が達成する必要があるのは、すべてのデータベースを照会できる単一の「Flask」関数です。他のすべての機能は、1 つのデータベースにのみアクセスする必要があります。
DB は既に存在し、そこからデータをロードしています。
最初は、Flask モデルを使用せずに、SQL-Alchemy 抽象化レイヤーのみを使用していました。コードは次のようになります。
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
settings.py で宣言されている DATABASE_URI です。問題ではないと思いますが、基礎となる DB は Mysql サーバーであり、DATABASE_URI は次のようになります。
DATABASE_URI = 'mysql://' + dbuser + ':' + dbpass + '@' + dbhost + '/' +dbname
上記のコードにより、次のようなものを書くことができます。
myTable = Table('branch', metadata, autoload=True)
myBranch = select([myTable])
これは非常に便利です。複数の DB を扱う必要がない限り、このアプローチは問題なく機能します。より正確には、まったく同じ構造を持つ複数の DB に属するデータを (同じ関数内から) 表示したいと思います。同じクエリを任意の DB に対して正常に実行できることを意味します。擬似コード:
@app.route('/summary')
def summary():
....
allData = []
for db in all_of_my_dbs:
allData.append(db.query())
....
sendToTemplate(allData)
それは実行可能なものですか?それは実現可能ですか?ありがとうございました。