Я пытаюсь заставить это множество ---многих соединений работать с Flask -SQLAlchemy и двумя базами данных MySQL, и это очень близко, за исключением того, что для таблицы соединений используется неправильная база данных. Вот основы...
У меня есть main_db
и vendor_db
. Таблицы настроены как main_db.users
,main_db.user_products
(таблицу отношений ), а затем vendor_db.products
. Должно быть довольно ясно, как все это связано.
в моем app.py я настраиваю базы данных следующим образом:
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://user:pass@localhost/main_db'
app.config['SQLALCHEMY_BINDS'] = {
'vendor_db': 'mysql://user:pass@localhost/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))
Проблема в том, что когда я пытаюсь получить продукты пользователя, он пытается использовать vendor_db
для таблицы соединения вместо main_db
. Любые идеи, как я могу вместо этого использовать main_db
? Я попытался настроить другую привязку к main_db
и установить info={'bind_key': 'main_db'}
в определении таблицы отношений, но безуспешно. Спасибо!