2015-08-08 31 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()