Flask 连接到 mysql 时出现断言错误 (python)

问题描述 投票:0回答:1

当尝试访问 localhost:5000/mysqltest 时,服务器抛出以下异常:

AssertionError:无法再在应用程序上调用设置方法“teardown_request”。它已经处理了第一个请求,任何更改都不会一致应用。 确保在运行应用程序之前完成设置应用程序所需的所有导入、装饰器、函数等。

import os
from flask import Flask
from flaskext.mysql import MySQL

app=Flask(__name__)
app.config['MYSQL_DATABASE_HOST'] = 'localhost'
app.config['MYSQL_DATABASE_USER'] = 'mydbuser'
app.config['MYSQL_DATABASE_PASSWORD'] = 'mypassword'
app.config['MYSQL_DATABASE_DB'] = 'mydatabasename'


@app.route('/mysqltest')
def mysqlselect():
    mysql = MySQL(app)
    cnx = mysql.connect()
    cursor=cnx.cursor()
    cursor.execute(''' select tk_date from token ''')
    data=cursor.fetchall()
    print (data)
    cursor.close()
    return "test"


if __name__=='__main__':
    app.run(debug=True)

我预计问题来自于扩展flask-mysql 的错误安装。我还仔细检查了我的依赖关系。

flask database-connection flask-mysql
1个回答
0
投票

实际上这是一个非常愚蠢的错误: 该行: mysql = MySQL(应用程序)

不得在函数中,而应在代码开头,如下所示:

import os
from flask import Flask
from flaskext.mysql import MySQL

app=Flask(__name__)
app.config['MYSQL_DATABASE_HOST'] = 'localhost'
app.config['MYSQL_DATABASE_USER'] = 'mydbuser'
app.config['MYSQL_DATABASE_PASSWORD'] = 'mypassword'
app.config['MYSQL_DATABASE_DB'] = 'mydatabasename'
mysql = MySQL(app)

@app.route('/mysqltest')
def mysqlselect():
    cnx = mysql.connect()
    cursor=cnx.cursor()
    cursor.execute(''' select tk_date from token ''')
    data=cursor.fetchall()
    print (data)
    cursor.close()
    return "test"


if __name__=='__main__':
    app.run(debug=True)
© www.soinside.com 2019 - 2024. All rights reserved.