2014-07-25 2 views
1

J'ai deux liaisons de base de données dans Flask - 'default' et 'sus'. J'ai utilisé bind_key dans le modèle, cela a fonctionné correctement.Comment choisir les liaisons de base de données dans flask-sqlalchemy

class Person(db.Model): 
    __tablename__ = 'persons' 
    __bind_key__ = 'sus' 
    id = Column(Integer, primary_key=True) 
    name = Column(Unicode) 
Person.query.get(5) 

Mais maintenant je dois exécuter que de 'SUS' bind:

from flask.ext.sqlalchemy import SQLAlchemy 
from sqlalchemy import func 

db = SQLAlchemy(app) 
db.session.query(func.do_something(some_params)).first() 
db.session.commit() 

et moi avons eu la liaison 'par défaut', pas 'SUS'. Que devrais-je faire?

+0

J'ai trouvé la solution. Là: http://stackoverflow.com/questions/6872500/flask-inherited-classes-of-tables-in-multiple-identical-databases-using-bind-k?rq=1 – kalombo

Répondre

0

Votre requête db.session n'utilise pas le modèle Personne du tout, il ne sait rien au sujet de la __bind_key__

Essayez de factoriser votre requête afin que vous puissiez utiliser Person.query.filter(...).first()

+0

Je ne sais pas comment je peux refactoriser cela question. Pourriez-vous le refactoriser pour moi? J'ai besoin d'exécuter la fonction sql "do_something" à partir d'autres bind. – kalombo

Questions connexes