Sto provando a far funzionare questo join molti-a-molti con Flask-SQLAlchemy e due database MySQL, ed è molto vicino tranne che sta usando il database sbagliato per la tabella di join. Ecco le basi ...Join multi-database molti-a-molti con Flask-SQLAlchemy
Ho main_db
e vendor_db
. Le tabelle sono impostate come main_db.users
, main_db.user_products
(la tabella delle relazioni) e quindi vendor_db.products
. Dovrebbe essere abbastanza chiaro come siano tutti collegati.
nel mio app.py, sto seting il backup dei database in questo modo:
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://user:[email protected]/main_db'
app.config['SQLALCHEMY_BINDS'] = {
'vendor_db': 'mysql://user:[email protected]/vendor_db'
}
definizioni del modello sono impostati in questo modo:
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))
Il problema è che quando cerco di ottenere prodotti di un utente che sta cercando di utilizzare vendor_db
per la tabella di join anziché main_db
. Qualche idea su come posso farlo usare invece main_db
? Ho provato a impostare un altro binding su main_db
e l'impostazione info={'bind_key': 'main_db'}
sulla definizione della tabella delle relazioni, ma senza fortuna. Grazie!