mysql - 如何使用不同的凭据创建到同一数据库的多个 sqlalchemy 连接?

标签 mysql flask sqlalchemy flask-sqlalchemy

我有一个使用 sqlalchemyflask 应用程序。目前,我有这样的东西:

from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+mysqldb://user1@localhost:3306'
db = SQLAlchemy(app)

user1 帐户的数据库查询具有默认超时。但是,某些 API 调用预计需要更长的时间,我想为这些特定调用添加更长的超时时间。为此,我有另一个数据库用户 (user2),它配置了更长的超时。处理与同一数据库但具有不同凭据的连接的最无缝方法是什么?理想情况下,我想要这样的东西:

from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+mysqldb://user1@localhost:3306'
db = SQLAlchemy(app)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+mysqldb://user2@localhost:3306'
long_query_db = SQLAlchemy(app)

并使用long_query_db进行较长的数据库查询,就像我之前使用db一样。不幸的是,实际发生的情况是 app.config 在创建连接之前被修改,因此 long_query_dbdb 都使用user2 的凭据。

最佳答案

最近这样做是为了与 postgresdb 进行登录,并与另一个 mysql 数据库进行访问一些数据。

配置.py

SQLALCHEMY_OUTER_DATABASE = "mysql+mysqlconnector://" + OUTER_LOGIN + ":" + OUTER_PASSWORD + "@" + OUTER_SERVER + ":" + OUTER_PORT + "/" + OUTER_DATABASE
SQLALCHEMY_BINDS = {
    'binds': SQLALCHEMY_OUTER_DATABASE
}

init.py

global db_outer = None
....


def create_app(config_name):
    db.init_app(app) # first db
    engine = create_engine(app.config['SQLALCHEMY_OUTER_DATABASE'], pool_recycle = 3600)
    db_outer = scoped_session(sessionmaker(bind=engine)) # second db

关于mysql - 如何使用不同的凭据创建到同一数据库的多个 sqlalchemy 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28423110/

相关文章:

python - Flask-SQLAlchemy 传统查询接口(interface)与新查询接口(interface)

python - Flask,使用不同的数据库连接、相同的模型多次注册相同的蓝图

php - 为什么 PHPMyAdmin 中的日期条目是 0000-00-00?

python - 如何在一段时间后更改 Flask-SQLAlchemy URI?

php - Highchart 列中没有显示任何内容

python - 如何在 Flask 中调用另一个 View

python - Flask 配置 from_object 的正确使用方法

python - 我的本地 postgresql 数据库 url 的形式是什么?

java - 为什么在我的查询中添加 Where 子句时没有得到结果?

php - 1452 > 外键约束失败 PDO PHP