Configurando Flask-SQLAlchemy para usar múltiples bases de datos con Flask-Restless

Tengo una aplicación Flask que usa Flask-SQLAlchemy y estoy tratando de configurarlo para usar múltiples bases de datos con el paquete Flask-Restless.

De acuerdo con los documentos , la configuración de sus modelos para usar múltiples bases de datos con __bind_key__ parece bastante sencilla.

Sin embargo, no parece estar funcionando para mí.

Creo mi aplicación e inicializo mi base de datos de esta manera:

 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) 

Luego defina mis modelos, incluido __bind_key__ , que debería indicar a SQLAlchemy qué DB necesita usar:

 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) ... 

Entonces enciendo Flask-Inquieto como este:

 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) 

La aplicación funciona bien y cuando llego a http://localhost:5000/api/postgres_model/[id] obtengo la respuesta JSON esperada del objeto desde la base de datos de Postgres (supongo que esto es porque tengo sus credenciales en SQLALCHEMY_DATABASE_URI ).

Aunque cuando http://localhost:5000/api/mysql_model/[id] , obtengo un mysql_model_table que indica que está buscando en la base de datos de Postgres, no en MySQL.

¿Qué estoy haciendo mal aquí?

Esto no estaba funcionando debido a un simple error tipográfico:

 __bind_key = 'db1' 

Debería haber sido

 __bind_key__ = 'db1' 

He actualizado la pregunta original y he corregido el error tipográfico como un ejemplo de cómo esto puede funcionar para otros.