Flask -SQLAlchemy - как автозагрузить таблицу из Bind (вторая база данных) - PullRequest
0 голосов
/ 10 июля 2020

Можно ли использовать autoload для таблицы в Flask-SQLAlchemy при использовании вторичной базы данных?

Я пытался настроить bind_key в config.py, чтобы иметь доступ к двум отдельные базы данных, но я не могу получить его в autoload таблицу из вторичной базы данных db2

from flask import Flask, jsonify, abort, request
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
app = Flask(__name__)
app.config.from_pyfile('config.py')
db = SQLAlchemy(app)
migrate = Migrate(app, db)

class TAB1(db.Model):
    __tablename__ = 'TABLE1'
    __bind_key__ = 'db1'
    __table_args__ = {
        'autoload': True,
        'autoload_with': db.engine
    }
    
class TAB2(db.Model):
    __bind_key__ = 'db2'
    __tablename__ = 'TABLE2'

    __table_args__ = {
        'autoload': True,
        'autoload_with': db.engine
    }

config.py

SQLALCHEMY_DATABASE_URI = "mysql+mysqlconnector://root:example@database1-db:9001/database1"
SQLALCHEMY_BINDS = {
    'db2': "postgres://postgres:example@database2-db:9002/database2",
    'db1': SQLALCHEMY_DATABASE_URI
}

Я получаю сообщение об ошибке:

sqlalchemy.exc.NoSuchTableError: `TABLE2`

Я подозреваю, что мне нужно изменить autoload_with, чтобы каким-то образом относиться к bind_key, но не могу понять, как?

1 Ответ

0 голосов
/ 10 июля 2020

Разобрался, это:

'autoload_with': db.get_engine(bind="db2")
...