私は現在、アプリケーションが正常に動作していますが、1つのデータベースを自動マッピングしていますが、別のデータベースにもアクセスする必要があります。私はここでFlask-SQLAlchemyの文書に従うことを試みた:http://flask-sqlalchemy.pocoo.org/2.1/binds/、しかしそれはautomap_baseと働かないようである。Flask-SQLAlchemyを使用して複数のデータベースをオートマップする
私が行った変更は、SQLALCHEMY_BINDS
を作成し、をmodelschesに追加することでした。私が手にエラーが
sqlalchemy.exc.ArgumentError: Mapper Mapper|Table2|table2 could not assemble any primary key columns for mapped table 'table2'
は、しかし、両方のテーブルは主キー列を持っている、と私はSQLALCHEMY_BINDS
を取り除く場合、db2
のものにURIを設定し、のみmodels.pyでtable2
、すべてを持っています正常に動作します。
私は明らかに何か間違っていますが、私はそれが何であるか分かりません。フラスカはまだtable2
をdb1
に探しているようです。私は自分の問題は、いくつかの変更を__init__.pyにする必要があると考えていますが、私はそれが何であるかはわかりません。
config.py
SQLALCHEMY_DATABASE_URI = 'mysql://[email protected]/db1'
SQLALCHEMY_BINDS = {
'otherDB': 'mysql://[email protected]/db2',
}
__init__.py
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy.ext.automap import automap_base
app = Flask(__name__)
app.config.from_object('config')
db = SQLAlchemy(app)
db.Model = automap_base(db.Model)
from app import models
db.Model.prepare(db.engine, reflect=True)
models.py
class Table1(db.Model):
__tablename__ = 'table1'
class Table2(db.Model):
__bind_key__ = 'otherDB'
__tablename__ = 'table2'