Многие -до -многие мульти -базы данных соединяются с Flask -SQLAlchemy

Я пытаюсь заставить это множество ---многих соединений работать с 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'}в определении таблицы отношений, но безуспешно. Спасибо!

6
задан jeffff 11 July 2012 в 17:41
поделиться