使用SqlAlchemy的select和join函数创建SQL查询

3 投票
2 回答
3757 浏览
提问于 2025-04-15 12:02

我有两个表,一个叫“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的选择和连接功能来创建上述查询呢?

2 个回答

0

你可以在映射表的时候连接表。

orm.mapper()里。

想了解更多信息,可以查看这个链接:

www.sqlalchemy.org/docs/

2

试试这个...

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)

撰写回答