如何使用sql炼金术查询连接?

时间:2015-08-08 09:43:30

标签: python mysql join sqlalchemy querying

我正在尝试使用SqlAlchemy和mysql作为后端。以下是我的表模式(使用SQLAlchemy为ORM定义):

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相当新。感谢您提前提供任何帮助。

1 个答案:

答案 0 :(得分:0)

如果列已经具有外键关系,则以下内容应该有效。

阅读关于联接的docs

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