Próbuję doprowadzić do tego, że wiele z nich łączy pracę z Flask-SQLAlchemy i dwiema bazami danych MySQL, i jest bardzo blisko, z wyjątkiem użycia niewłaściwej bazy danych dla tabela łączenia. Oto podstawy ...Łączenie wielu baz danych z wieloma bazami danych za pomocą Flask-SQLAlchemy
Mam main_db
i vendor_db
. Tabele są skonfigurowane jako main_db.users
, main_db.user_products
(tabela relacji), a następnie vendor_db.products
. Powinno być całkiem jasne, jak te wszystkie są połączone.
w moim app.py, jestem tworzeniu bazy baz danych tak:
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://user:[email protected]/main_db'
app.config['SQLALCHEMY_BINDS'] = {
'vendor_db': 'mysql://user:[email protected]/vendor_db'
}
definicje modelu są ustawione tak:
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))
Problemem jest to, że gdy próbuję uzyskać produkty użytkownika, które próbują użyć vendor_db
dla tabeli łączenia zamiast main_db
. Jakieś pomysły, jak mogę to zrobić, zamiast tego użyć main_db
? Próbowałem skonfigurować inne powiązanie z main_db
i ustawienie info={'bind_key': 'main_db'}
w definicji tabeli relacji, ale bez powodzenia. Dzięki!