我有一个使用Flask-SQLAlchemy的Flask应用程序,我正在尝试将其配置为使用Flask-Restless软件包使用多个数据库。
根据文档,配置模型以使用多个数据库__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
不存在的错误,表明它在Postgres数据库中查找,而不是MySQL中。
我在这里做错了什么?
由于出现简单的错字,因此无法正常工作:
__bind_key = 'db1'
本来应该
__bind_key__ = 'db1'
This is a starting point for a Flask website + API using: Flask-Restless (API) Flask-Security (Authentication) Flask-JWT (API authentication) Flask-Admin (Admin views) SQLAlchemy (ORM) Plus stubs for
问题内容: 我试图在 Flask-SQLAlchemy中 建立多对多关系,但似乎我不知道如何填写 “多对多标识符数据库” 。您能帮我了解我在做什么错以及应该怎么看吗? 然后是我的标识符数据库: 到目前为止,当我尝试将数据插入数据库时,看起来像这样。 现在我的问题是,由于我真的无法创建“ student_identifier”对象,如何将其添加到多对多数据库?如果可以的话,它可能看起来像这样:
问题内容: 这两个主要区别是在可用性和功能方面 如果您已经有大量的模型类,那么使用flask-restLESS非常合理,对吗?如果仅靠flask操作,它将缺少哪些功能。 问题答案: 虽然我确信Flask-RESTful和Flask-RESTless之间将会有很大的重叠,但据我所知,这是方向上的差异: Flask-RESTful旨在成为通用的,它是“可与现有ORM /库一起使用的轻量级抽象”。你的资
问题内容: 当我尝试使用以下设置通过Flask-Mail将电子邮件发送到Gmail的SMTP服务器时,我得到了。如何修改我的配置以通过Gmail发送电子邮件? 问题答案: 服务器是“ smtp.gmail.com”。 端口必须与使用的安全性类型匹配。 如果将STARTTLS与一起使用,请使用。 如果直接将SSL / TLS与一起使用,则使用。 同时启用STARTTLS或SSL / TLS。 根据你
在Flask Web应用程序中使用原始SQL对数据库执行CRUD操作可能很乏味。 相反,Python工具包SQLAlchemy是一个功能强大的OR映射器,为应用程序开发人员提供了SQL的全部功能和灵活性。 Flask-SQLAlchemy是Flask扩展,它将对SQLAlchemy的支持添加到Flask应用程序中。 什么是ORM(对象关系映射)? 大多数编程语言平台是面向对象的。 另一方面,RDB
Flask-SQLAlchemy Flask-SQLAlchemy is an extension for Flask that adds support forSQLAlchemy to your application. It aims to simplify using SQLAlchemywith Flask by providing useful defaults and extra h