Flask-SQLAlchemy와 두 개의 MySQL 데이터베이스를 사용하여 다 대다 조인 작업을하려고하는데, 다른 데이터베이스를 사용하는 경우를 제외하면 매우 가깝습니다. 조인 테이블 여기에 기본이 있습니다 ...Flask-SQLAlchemy를 사용한 다 대다 다중 데이터베이스 조인
나는 main_db
과 vendor_db
을 가지고 있습니다. 테이블은 main_db.users
, main_db.user_products
(관계 테이블), 그리고 vendor_db.products
으로 설정됩니다. 그것들이 모두 어떻게 연결되어 있는지 꽤 명확해야합니다. 내 app.py에서
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'}
을 설정하려했지만 행운이 없습니다. 감사!