On Jan 18, 2011, at 9:11 AM, Steve wrote: > Hi all, > > Newbie here. > > I just want to execute the following sql using SqlAlchemy . But > getting various errors. > > select ssf.factor,ssf.displayname,pmw.weight > from probability_models_weights pmw > inner join probability_models pm on pm.id = pmw.model_id > inner join success_factors ssf on ssf.id = pmw.factor_id > where pm.id = 6 > > I want to execute this using session. > > I am using declarative base with the following auto loaded classes. > > class SucessFactors(WBase): > __tablename__ = "success_factors" > __table_args__ = {'autoload':True} > > class ProbabilityModels(WBase): > __tablename__ = "probability_models" > __table_args__ = {'autoload':True} > > class ProbabilityModelsWeights(WBase): > __tablename__ = "probability_models_weights" > __table_args__ = {'autoload':True} > > I tried the following but it didn't work. > > session.query(SucessFactors.factor,SucessFactors.displayname,ProbabilityModelsWeights.weight). > \ > join(ProbabilityModelsWeights,ProbabilityModels, > ProbabilityModelsWeights.model_id == ProbabilityModels.id).\ > join(ProbabilityModelsWeights,SucessFactors, > ProbabilityModelsWeights.factor_id == SucessFactors.id).\ > filter(ProbabilityModels.id == model_id).\ > all()
query.join() is a one-argument form (it will accept two arguments in 0.7, but thats not released yet), so here you want to be saying query(...).select_from(ProbabiliyModelsWeights).join((ProbabiltityModels, ProbabiltiyModelsWeights.model_id==ProbabilityModels.id)). the select_from() accepting a mapped class is a helper that was introudced in 0.6.5. Also note the tuple form inside of join(), i.e. join((target, onclause)) (you won't need that in 0.7). Documented at http://www.sqlalchemy.org/docs/orm/tutorial.html#querying-with-joins . > > Thanks in advance. > > Steve. > > -- > You received this message because you are subscribed to the Google Groups > "sqlalchemy" group. > To post to this group, send email to sqlalchemy@googlegroups.com. > To unsubscribe from this group, send email to > sqlalchemy+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/sqlalchemy?hl=en. > -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalchemy@googlegroups.com. To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.