Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 计算值在sqlite3数据库表列中出现的次数_Python_Sqlite_Sqlalchemy_Flask Sqlalchemy - Fatal编程技术网

Python 计算值在sqlite3数据库表列中出现的次数

Python 计算值在sqlite3数据库表列中出现的次数,python,sqlite,sqlalchemy,flask-sqlalchemy,Python,Sqlite,Sqlalchemy,Flask Sqlalchemy,我一直在执行一个查询,以计算在sqlite3数据库表(Users)中,“country”列中出现值“Australia”的次数 我需要以一种更加动态的方式来处理本栏中的任何国家/地区值 我尝试了以下方法,但不幸的是,对于在循环变量(每个)中传递的所有值,我只能得到0计数 非常感谢您的帮助。问题在于国家是一个结果元组列表,而不是字符串列表。最终的结果是str(each)的值与('Australia',)类似,这应该可以清楚地说明为什么结果是0 有关要提取单列值列表的信息,请参见。如果需要不同的结果

我一直在执行一个查询,以计算在sqlite3数据库表(Users)中,“country”列中出现值“Australia”的次数

我需要以一种更加动态的方式来处理本栏中的任何国家/地区值

我尝试了以下方法,但不幸的是,对于在循环变量(每个)中传递的所有值,我只能得到0计数


非常感谢您的帮助。

问题在于
国家
是一个结果元组列表,而不是字符串列表。最终的结果是
str(each)
的值与
('Australia',)
类似,这应该可以清楚地说明为什么结果是0

有关要提取单列值列表的信息,请参见。如果需要不同的结果,请在SQL中使用
distinct

但是,您不应该首先查询不同的国家,然后启动一个查询来计算每个国家的发生率。改为使用
分组依据

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模块与direct SQL一起使用,则这是一个简单的查询:

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

非常感谢,这项工作做得非常完美,反应非常快。谢谢!是否还要按计数对该查询进行排序?我自己发现,这其实很简单:country\u counts=db.session.query(User.country,db.func.count())。group\u by(User.country)。order\u by(db.func.count().desc())。all()
country_counts = db.session.query(Users.country, db.func.count()).\
    group_by(Users.country).\
    all()

for country, count in country_counts:
    print(country, count)
curs = con.execute("SELECT COUNT(*) FROM users WHERE country=?", ("Australia",))
nb = curs.fetchone()[0]