当我尝试将Flask中的数据发送到进度条的HTML页面时,出现错误消息:
光标= mysql.connection.cursor() AttributeError:'NoneType'对象没有属性'cursor'
我知道这意味着没有与数据库的连接。如果我取消注释yield "data:" + str(row) + "\n\n"
,则没有错误,并且数据库已连接。
@app.route('/progress')
def progress():
def generate():
while 1:
cursor = mysql.connection.cursor()
cursor.execute("SELECT * FROM log_data WHERE id =( SELECT MAX(id) FROM log_data);")
mysql.connection.commit()
records = cursor.fetchall()
cursor.close()
for row in records:
print(row)
yield "data:" + str(row[1]) + "\n\n"
time.sleep(0.5)
break
return Response(generate(), mimetype='text/event-stream')
这是HTML中的脚本:
var source = new EventSource("/progress");
source.onmessage = function(event) {
$('.progress-bar').css('width', event.data+'%').attr('aria-valuenow', event.data);
if(event.data == 100){
source.close()
}
}
为什么会出现这种情况,以及如何将流数据发送到Flask中的HTML页面?