首页 > 解决方案 > 为什么我想在mysql中计算多个表的数据频率时出现错误?Flask 用于创建 Web 应用程序

问题描述

我想在我的网络应用程序中创建一个仪表板小部件。第一步是从两个表中统计mysql中pos、neg和neu的频率。我试图在 Flask 中找到解决方案,但并不多。希望你能帮助我。

我得到的错误是:

MySQLdb._exceptions.OperationalError: (1241, '操作数应包含 1 列')

mysql中的表:

问题9

在此处输入图像描述

问题10

在此处输入图像描述

我的代码:

@app.route('/we/<string:programid>')
def we(programid):
# Create cursor
cur = mysql.connection.cursor()

result = """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(result, data_tuple)

program = cur.fetchall()

mysql.connection.commit()


if result > 0:
    return render_template('we.html',program=program)
else:
    msg = 'No Results Found'
    return render_template('we.html', msg=msg)
# Close connection
cur.close()

标签: pythonmysql

解决方案


group by 必须在 where 子句之后所以我发布了所有 python 代码,我想添加一个尝试,但你可以查找

你的 sql 有一些问题,比如他自己的组,l 但你的 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()

推荐阅读