【问题标题】:SQLAlchemy - list data from two tables with one querySQLAlchemy - 使用一个查询列出两个表中的数据
【发布时间】:2021-10-06 20:23:06
【问题描述】:

我是 Flask 和 Sqlalchemy 的新手,我很难找到一些解决方案,我可以通过一个查询从 Sqlalchemy 中的两个表中获取数据

例如,如果我有两个表:

table A                               table B
-------------------------             --------------------
id   |  value | name                 id   |   pass   |   name
 1   |  10    | first_name            1   |    no    |   first_name
 2   |  20    | second_name           2   |    yes   |   second_name

是否有一个查询可以按名称过滤两个表,例如“first_name”并得到如下内容:

<A 1>
<B 1>

我尝试使用 .join,但如果有更多同名记录,我会得到这个输出:

[<A1> <B1>]
[<A3> <B1>]
[<A1> <B3>]
[<A3> <B3>]etc...

【问题讨论】:

    标签: python sqlalchemy


    【解决方案1】:

    如果要返回每个表中符合特定条件的所有结果,可以使用UNION

    SELECT 'A' as tablename, id FROM A WHERE name='first name'
    UNION
    SELECT 'B' as tablename, id FROM B WHERE name='first name'
    

    【讨论】:

    • 相关的SQLALchemy docs
    • 感谢您的回答,这确实是我需要的,但使用联合后我收到消息“传递给 CompoundSelect 的所有可选择项必须具有相同的列数;选择 #1 有 8 列,选择 # 2 有 7" UNION 可以用于不同列数的表吗?
    • 我刚刚使用 .with_entities 过滤了我需要的两列的队列,我得到了我想要的结果:D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-07
    • 1970-01-01
    • 2014-08-23
    • 1970-01-01
    • 1970-01-01
    • 2015-10-26
    相关资源
    最近更新 更多