所以我跑的时候
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
获得空列。我错过了一些傻事吗?
答案 0 :(得分:3)
您可能正在使用Flask-SQLAlchemy,它提供查询属性作为选择模型实体的快捷方式。您的查询等同于
db.session.query(TableOneModel).\
join(TableTwoModel,TableOneModel.id == TableTwoModel.id)
显式查询两个实体:
db.session.query(TableOneModel, TableTwoModel).\
join(TableTwoModel,TableOneModel.id == TableTwoModel.id)
或add the entity原件:
TableOneModel.query.\
join(TableTwoModel,TableOneModel.id == TableTwoModel.id).\
add_entity(TableTwoModel)