【问题标题】:Run SQL in several different databases with Flask-SQLAlchemy使用 Flask-SQLAlchemy 在几个不同的数据库中运行 SQL
【发布时间】:2016-12-22 19:50:21
【问题描述】:

我正在使用 Flask 和 Flask-SQLAlchemy 编写一个项目,在该项目中,我需要访问未知数据库,并在这些数据库中使用 db.engine.execute(<SQL>) 执行查询。

但是如何指定哪个数据库将接收查询?

例子:

app = Flask(__name__, static_url_path="")
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:******@127.0.0.1:3306/api'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True

app.config['SQLALCHEMY_BINDS'] = {
    'db1':        'mysqldb://localhost/users',
    'db2':      'sqlite:////path/to/appmeta.db'
}
api = Api(app)
auth = HTTPBasicAuth()
db = SQLAlchemy()
db.init_app(app)
@app.before_first_request
def create_database():
    db.drop_all()
    db.create_all()


 @app.route('/test')
 def test():
    result = db.engine.execute("show tables;")
    names = []
    for row in result:
        names.append(row[0])
    return str(names)

如何在 db1 中运行 show tables;?而在 db2 中呢?

【问题讨论】:

    标签: python database flask flask-sqlalchemy


    【解决方案1】:

    您可以在 Flask-SQLAlchemy 中使用get_engine() 方法:

    engine_db1 = db.get_engine(app, 'db1')
    engine_db2 = db.get_engine(app, 'db2')
    
    sql = text("SHOW TABLES")
    results_db1 = engine_db1.execute(sql)
    results_db2 = engine_db2.execute(sql)
    

    【讨论】:

      猜你喜欢
      • 2021-10-09
      • 2018-01-22
      • 1970-01-01
      • 2015-06-06
      • 1970-01-01
      • 2017-04-08
      • 2013-02-07
      • 1970-01-01
      相关资源
      最近更新 更多