簡體   English   中英

計算在sqlite3數據庫表列中出現值的次數

[英]count how many times in an sqlite3 database table column the values occurs

我一直在執行查詢以計算sqlite3數據庫表(用戶)中“ country”列中出現“ Australia”值的次數。

australia = db.session.query(Users.country).filter_by(country="Australia").count()

對於此列中可能存在的任何國家/地區值,我都需要以更加動態的方式進行。

我嘗試了以下方法,但不幸的是,對於循環變量(每個變量)中傳遞的所有值,我只能得到0的計數。

country = list(db.session.query(Users.country))

country_dict = list(set(country))

for each in country_dict:

    print(db.session.query(Users.country).filter_by(country=(str(each))).count())

任何幫助將不勝感激。

問題是country是結果元組的列表,而不是字符串的列表。 最終結果是, str(each)的值與('Australia',)相似,這應該很清楚為什么您得到的計數為0。

有關何時要提取單列值列表的信息,請參見此處 如果需要不同的結果,請在SQL中使用DISTINCT

但是,您不應該首先查詢不同的國家/地區,然后再觸發查詢以計算每個國家/地區的發生次數。 而是使用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在使用ORM時不會隱藏SQL,但可以使用它。

如果可以將sqlite3模塊與直接SQL一起使用,這是一個簡單的查詢:

curs = con.execute("SELECT COUNT(*) FROM users WHERE country=?", ("Australia",))
nb = curs.fetchone()[0]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM