Flask-SQLAlchemy - 如何从 Bind(第二个数据库)自动加载表

问题描述 投票:0回答:2

使用辅助数据库时是否可以对

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
,但不知道如何做?

sqlalchemy flask-sqlalchemy
2个回答
1
投票

解决了,是:

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

0
投票

'autoload_with':db.get_engine(bind_key='your_bind_key')

© www.soinside.com 2019 - 2024. All rights reserved.