Flask-SQLAlchemyと2つのMySQLデータベースとの多対多結合を作成しようとしていますが、間違ったデータベースジョインテーブルここに基本があります...Flask-SQLAlchemyを使用した多対多データベースの結合
私はmain_db
とvendor_db
を持っています。テーブルはmain_db.users
,main_db.user_products
(リレーションテーブル)、次にvendor_db.products
と設定されています。それらがどのように結びついているかを明確にすべきです。私app.pyで
、私はこのようなデータベースをアップSETINGだ:
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://user:[email protected]/main_db'
app.config['SQLALCHEMY_BINDS'] = {
'vendor_db': 'mysql://user:[email protected]/vendor_db'
}
モデルの定義は次のように設定されています
from app import db
# Setup relationship
user_products_tbl = db.Table('user_products', db.metadata,
db.Column('user_id', db.Integer, db.ForeignKey('users.user_id')),
db.Column('product_id', db.Integer, db.ForeignKey('products.product_id'))
)
class User(db.Model):
__tablename__ = 'users'
id = db.Column('user_id', db.Integer, primary_key=True)
products = db.relationship("Product", secondary=user_products_tbl,
backref="users", lazy="dynamic")
class Product(db.Model):
__bind_key__ = 'vendor_db'
__tablename__ = 'products'
id = db.Column('product_id', db.Integer, primary_key=True)
name = db.Column(db.String(120))
問題は、私がしようとするということですmain_db
ではなく、結合テーブルにvendor_db
を使用しようとしているユーザーの製品を入手してください。どのように私はそれを代わりにmain_db
を使用することができます任意のアイデアですか?私はmain_db
に別のバインドを設定しようとしましたが、関係テーブル定義でinfo={'bind_key': 'main_db'}
を設定しましたが、運はありません。ありがとう!