2015-08-08 36 views
0

我试图使用SQLAlchemy与MySQL作为backend.The以下是我的表模式(使用SQLAlchemy的ORM定义):如何使用sql炼金术进行连接查询?

class ListItem(Base): 
"""""" 
__tablename__ = "listitem" 

ListItemID = Column(Integer, primary_key=True) 
ListItemTypeID = Column(Integer, ForeignKey("ListItemType.ListItemTypeID")) 
ModelID = Column(Integer, ForeignKey("Model.ModelID")) 
RefCode = Column(String(25)) 

def __init__(self, ListItemTypeID, ModelID, RefCode): 
    self.ListItemTypeID= ListItemTypeID 
    self.ModelID= ModelID 
    self.RefCode= RefCode 

class Model(Base): 
"""""" 
__tablename__ = "model" 

ModelID= Column(Integer, primary_key=True) 
Name = Column(String(255)) 

def __init__(self, Name): 
    self.Name= Name 

我不包括类映射器像其他的参考表(ListItemType) 。

我想知道如何查询将“ListItem”表加入到“Model”表和“ListItemType”表中。

的SQL相当于相同的应该是这样的:

select listitem.ListItemID, model.Name, listitemtype.Name from listitemrequest 
join listitemtype on listitemrequest.ListItemTypeID = listitemtype.ListItemID 
join model on listitemrequest.ModelID = Model.ModelID 

我使用SQLAlchemy的相当新。感谢您提前提供任何帮助。

回答

0

如果列已经有外键关系,则以下内容应该可以工作。

阅读关于加入的docs

result = session.query(listitemrequest). 
     join(listitemtype). 
     join(model). 
     with_entities([listitem.c.ListItemID, mode.c.name,listitemtype.c.Name]). 
     all()