计算 sql-alchemy 中的唯一行数

car*_*arl 2 python sqlalchemy flask-sqlalchemy

我是 sql alchemy 的新手,我想计算表中的唯一行,并输出唯一行以及该行的副本数。假设我有一张这样的桌子

Table A
--------------
id
address
Run Code Online (Sandbox Code Playgroud)

现在我想获取该表的所有行,但对于具有相同地址的行,我只想获取一行(与哪个 id 无关)。我还想知道某个特定地址有多少个 id。因此,如果有两个人住在同一地址“主要街道”(假设 id=4 和 id=12),我希望得到这样的输出(“主要街道”,2),

这是我的开始尝试

query = models.A.query
query = query.add_columns(func.count(models.A.address)).all()
Run Code Online (Sandbox Code Playgroud)

然而,这给了我该表中的总行数。所以我猜 func.count 是错误的函数?预先感谢卡尔

van*_*van 5

count是正确的函数,但您需要指定要计数的组。下面应该这样做:

q = (session.query(A.address, func.count(A.id).label("# people"))
    .group_by(A.address)
     ).all()
Run Code Online (Sandbox Code Playgroud)