我拥有:多个相同的数据库和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