Tôi đang cố gắng thực hiện công việc nối kết nhiều người này với Flask-SQLAlchemy và hai cơ sở dữ liệu MySQL, và nó rất gần, ngoại trừ việc sử dụng cơ sở dữ liệu sai bảng tham gia. Dưới đây là thông tin cơ bản ...Multi-to-many multi-database tham gia với Flask-SQLAlchemy
Tôi có main_db
và vendor_db
. Các bảng được thiết lập là main_db.users
, main_db.user_products
(bảng quan hệ), và sau đó vendor_db.products
. Nên được khá rõ ràng như thế nào tất cả những người được kết nối.
trong app.py của tôi, tôi seting lên cơ sở dữ liệu như thế này:
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://user:[email protected]/main_db'
app.config['SQLALCHEMY_BINDS'] = {
'vendor_db': 'mysql://user:[email protected]/vendor_db'
}
định nghĩa mẫu được thiết lập như thế này:
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))
Vấn đề là khi tôi cố gắng lấy sản phẩm của người dùng, nó đang cố gắng sử dụng vendor_db
cho bảng kết hợp thay vì main_db
. Bất kỳ ý tưởng làm thế nào tôi có thể làm cho nó sử dụng main_db
thay thế? Tôi đã thử thiết lập một liên kết khác với main_db
và đặt info={'bind_key': 'main_db'}
trên định nghĩa bảng quan hệ, nhưng không có may mắn. Cảm ơn!