擅长:python、mysql、java
<p>在阅读了SQLAlchemy和许多论坛的文档之后。我得到了答案。要查询use<code>left join</code>,我们可以使用<code>isouter=True</code>或<code>.outerjoin()</code>。
在我的例子中,我使用flask sqlalchemy来选择列,我使用<code>.with_entities()</code>,因为我有一个同名的列,我使用<code>.label()</code>来创建别名。这是我的SQLALchemy代码:</p>
<pre><code>pages = Page.query\
.with_entities(\
Page.page_id,\
Page.name.label('page_name'),\
Role.role_id,\
Role.name.label('role_name'),\
RolePage.can_readed,\
RolePage.can_created,\
RolePage.can_updated,\
RolePage.can_deleted,\
RolePage.can_submited,\
RolePage.can_approved,\
)\
.join(RolePage,\
(Page.page_id==RolePage.page_id) &
(RolePage.role_id==id), isouter=True)\
.join(Role, Role.role_id==RolePage.role_id, isouter=True)
</code></pre>
<p>这就解决了我的问题</p>