gpt4 book ai didi

python - 配置 Flask-SQLAlchemy 以使用 Flask-ReSTLess 的多个数据库

转载 作者:太空狗 更新时间:2023-10-29 17:46:53 24 4
gpt4 key购买 nike

我有一个使用 Flask-SQLAlchemy 的 Flask 应用程序,我正在尝试将其配置为使用带有 Flask-ReSTLess 包的多个数据库。

根据 the docs ,通过 __bind_key__ 配置您的模型以使用多个数据库似乎非常简单。

但是它似乎对我不起作用。

我创建我的应用程序并像这样初始化我的数据库:

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

SQLALCHEMY_DATABASE_URI = 'postgres://db_user:db_pw@localhost:5432/db_name'
SQLALCHEMY_BINDS = {
'db1': SQLALCHEMY_DATABASE_URI,
'db2': 'mysql://db_user:db_pw@localhost:3306/db_name'
}

app = Flask(__name__)
db = SQLALchemy(app)

然后定义我的模型,包括 __bind_key__,它应该告诉 SQLAlchemy 它需要使用哪个数据库:

class PostgresModel(db.Model):

__tablename__ = 'postgres_model_table'
__bind_key__ = 'db1'

id = db.Column(db.Integer, primary_key=True)
...


class MySQLModel(db.Model):

__tablename__ = 'mysql_model_table'
__bind_key__ = 'db2'

id = db.Column(db.Integer, primary_key=True)
...

然后我像这样启动 Flask-ReSTLess:

manager = restless.APIManager(app, flask_sqlalchemy_db=db)
manager.init_app(app, db)

auth_func = lambda: is_authenticated(app)

manager.create_api(PostgresModel,
methods=['GET'],
collection_name='postgres_model',
authentication_required_for=['GET'],
authentication_function=auth_func)

manager.create_api(MySQLModel,
methods=['GET'],
collection_name='mysql_model',
authentication_required_for=['GET'],
authentication_function=auth_func)

应用程序运行良好,当我点击 http://localhost:5000/api/postgres_model/[id] 时,我从 Postgres DB 获得了对象的预期 JSON 响应(我是我猜这是因为我在 SQLALCHEMY_DATABASE_URI 中有它的凭据)。

虽然当我点击 http://localhost:5000/api/mysql_model/[id] 时,我得到一个 mysql_model_table does not exist 错误,表明它正在寻找在 Postgres 数据库中,而不是在 MySQL 数据库中。

我在这里做错了什么?

最佳答案

由于一个简单的错字,这没有用:

__bind_key = 'db1'

应该是

__bind_key__ = 'db1'

我已经更新了原始问题并修正了拼写错误,作为这如何适用于其他人的示例。

关于python - 配置 Flask-SQLAlchemy 以使用 Flask-ReSTLess 的多个数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15021292/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com