2015-08-08 3 views
0

Я пытаюсь использовать SQLAlchemy с MySQL, как backend.The следующие моя схема таблицы (определенная для ОРМ с помощью SQLAlchemy):Как запросить соединения с помощью sql alchemy?

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()