使用辅助数据库时是否可以对
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
,但不知道如何做?
解决了,是:
'autoload_with': db.get_engine(bind="db2")
'autoload_with':db.get_engine(bind_key='your_bind_key')