我擁有:多個相同的數據庫和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
在settings.py中聲明爲DATABASE_URI。我想沒關係,但是底層的數據庫是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)
這是可行的嗎?這是否可行? 謝謝。
我已經看到了這個鏈接,因爲現在逃離我的原因,我認爲它並沒有滿足我的需求。明天會試一試。感謝你的回答。 – 2013-03-21 19:12:16
看起來像它一樣 – 2013-03-22 11:56:49
看起來不是我所需要的。或者至少我不能看到如何將包含在該頁面中的提示與我需要的相關聯。 – 2013-03-22 11:59:41