Python 为什么我在计算mysql中多个表的数据频率时出错?Flask用于创建web应用程序

Python 为什么我在计算mysql中多个表的数据频率时出错?Flask用于创建web应用程序,python,mysql,Python,Mysql,我想在我的web应用程序中创建一个仪表板小部件。第一步是从两个表中统计mysql中pos、neg和neu的频率。我试图在烧瓶里找到溶液,但不多。希望你能帮助我 我得到的错误是: MySQLdb._exceptions.OperationalError:1241,“操作数应包含1列” mysql中的表: 问题9 问题10 我的代码: group by必须位于where子句之后 所以我发布了所有的python代码,我想添加一个尝试,但是您可以查看 您的sql有一些问题,比如组本身的问题,但是您的py

我想在我的web应用程序中创建一个仪表板小部件。第一步是从两个表中统计mysql中pos、neg和neu的频率。我试图在烧瓶里找到溶液,但不多。希望你能帮助我

我得到的错误是:

MySQLdb._exceptions.OperationalError:1241,“操作数应包含1列”

mysql中的表:

问题9

问题10

我的代码:


group by必须位于where子句之后 所以我发布了所有的python代码,我想添加一个尝试,但是您可以查看

您的sql有一些问题,比如组本身的问题,但是您的python代码也有缺陷,正如您在下面看到的。sql查询的变量和要发送的数据,我将它们放在那里,这样看起来就比较干净了

connection =   mysql.connector.connect(host='localhost',
                                     database='test_db',
                                     user='user',
                                     password='password')
cur = connection.cursor(prepared=True)
sql_update_query = """SELECT(
(SELECT programid,sentiment, COUNT(*) 
FROM ques9 AS question9  
WHERE programid= %s
GROUP BY sentiment),
(SELECT programid,q10_sentiment, COUNT(*) 
FROM ques10 AS question10 
WHERE programid=%s
GROUP BY q10_sentiment ))"""

data_tuple = (programid, programid)
cur .execute(sql_update_query, data_tuple)
connection.commit()
if (connection.is_connected()):
    cur.close()
    connection.close()

因为你的疑问是错误的。从ques9中选择programid,情绪,COUNT*,其中programid=%s GROUP BY programid,情绪可能是第一个的替代方法,例如。我尝试过这种方法,但仍然出现错误鉴于programid必须为“test”,将其包含在SELECTHi SELECT中似乎是多余的。选择无效,第一个选择错误,所以我给他举了一个例子,告诉他ot应该是什么样子。因为我希望他有更多的文本要来。我应该怎么做来计算两个表的频率?我把Select放在括号里,因为我想计算两个表的频率…我从中得到了它,所以我修改了完整的sql代码,还编辑了python脚本。你也可以添加一个trx来解决问题
connection =   mysql.connector.connect(host='localhost',
                                     database='test_db',
                                     user='user',
                                     password='password')
cur = connection.cursor(prepared=True)
sql_update_query = """SELECT(
(SELECT programid,sentiment, COUNT(*) 
FROM ques9 AS question9  
WHERE programid= %s
GROUP BY sentiment),
(SELECT programid,q10_sentiment, COUNT(*) 
FROM ques10 AS question10 
WHERE programid=%s
GROUP BY q10_sentiment ))"""

data_tuple = (programid, programid)
cur .execute(sql_update_query, data_tuple)
connection.commit()
if (connection.is_connected()):
    cur.close()
    connection.close()