【问题标题】:How to query with joins using sql alchemy?如何使用 sql alchemy 查询连接?
【发布时间】:2015-08-09 13:15:41
【问题描述】:

我正在尝试使用 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 还是很陌生。感谢您提前提供任何帮助。

【问题讨论】:

    标签: python mysql join sqlalchemy querying


    【解决方案1】:

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

    阅读 docs 上的连接。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-30
      • 2013-01-28
      • 1970-01-01
      • 2016-12-24
      • 1970-01-01
      • 2014-07-07
      • 1970-01-01
      相关资源
      最近更新 更多