SqlAlchemy 外连接仅返回一张表

Ant*_*ell 0 python join sqlalchemy

所以当我 select * from table1 t1 left outer join table2 t2 on t1.id = t2.id;sqlite3终端运行时

我按照我的意愿和预期取回了数据。

但是,当我在 SqlAlchemy 中运行它时 TableOneModel.query.outerjoin(TableTwoModel,TableOneModel.id == TableTwoModel.id)

我只得到table1信息。我什至没有从 中得到空列table2。我错过了一些愚蠢的事情吗?

Ilj*_*ilä 7

您可能正在使用 Flask-SQLAlchemy,它提供查询属性作为选择模型实体的快捷方式。您的查询相当于

db.session.query(TableOneModel).\
    join(TableTwoModel,TableOneModel.id == TableTwoModel.id)
Run Code Online (Sandbox Code Playgroud)

显式查询两个实体:

db.session.query(TableOneModel, TableTwoModel).\
    join(TableTwoModel,TableOneModel.id == TableTwoModel.id)
Run Code Online (Sandbox Code Playgroud)

将实体添加到您的原始实体中:

TableOneModel.query.\
    join(TableTwoModel,TableOneModel.id == TableTwoModel.id).\
    add_entity(TableTwoModel)
Run Code Online (Sandbox Code Playgroud)