Проблема в том, что country
- это список результатов кортежей , а не список строк.Конечным результатом является то, что значение str(each)
является чем-то похожим на ('Australia',)
, что должно сделать очевидным, почему вы получаете счет 0 в качестве результата.
Когда вы хотите извлечь списокзначений одного столбца см. здесь .Если вам нужны разные результаты, используйте DISTINCT
в SQL.
Но вы не должны сначала запрашивать разные страны, а затем запускать запрос, чтобы подсчитать вхождение каждой из них.Вместо этого используйте GROUP BY
:
country_counts = db.session.query(Users.country, db.func.count()).\
group_by(Users.country).\
all()
for country, count in country_counts:
print(country, count)
Главное, на что нужно обратить внимание, это то, что SQLAlchemy не скрывает SQL при использовании ORM, а работает с ним.