【问题标题】:Create SQL query using SqlAlchemy select and join functions使用 SqlAlchemy 选择和连接函数创建 SQL 查询
【发布时间】:2010-10-31 08:34:09
【问题描述】:

我有两个表“tags”和“deal_tag”,表定义如下,

Table('tags', metadata,
          Column('id', types.Integer(), Sequence('tag_uid_seq'),
              primary_key=True),
          Column('name', types.String()),
         )

Table('deal_tag', metadata,
       Column('dealid', types.Integer(), ForeignKey('deals.id')),
       Column('tagid', types.Integer(), ForeignKey
           ('tags.id')),
        )

我想选择标签 ID、标签名称和交易数量(每 标签)。示例查询是

SELECT tags.Name,tags.id,COUNT(deal_tag.dealid) FROM tags INNER JOIN
deal_tag ON tags.id = deal_tag.tagid GROUP BY deal_tag.tagid;

如何使用 SqlAlchemy 选择和连接函数创建上述查询?

【问题讨论】:

    标签: python sqlalchemy


    【解决方案1】:

    试试这个...

    s = select([tags.c.Name, tags.c.id, func.count(deal_tag.dealid)], 
               tags.c.id == deal_tag.c.tagid).group_by(tags.c.Name, tags.c.id)
    

    【讨论】:

    • 您忘记了 .group_by(deal_tag.c.tagid)。这不适用于尊重 SQL 标准的数据库,您需要按 tags.c.Name 和 tags.c.id 分组,因为它们已被选中。
    【解决方案2】:

    你可以在映射表的时候加入表

    orm.mapper()

    更多信息请点击链接

    www.sqlalchemy.org/docs/

    【讨论】:

      猜你喜欢
      • 2023-03-18
      • 2014-01-02
      • 1970-01-01
      • 1970-01-01
      • 2020-04-18
      • 1970-01-01
      • 2021-01-21
      • 2020-11-29
      • 1970-01-01
      相关资源
      最近更新 更多