当尝试访问 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 的错误安装。我还仔细检查了我的依赖关系。
实际上这是一个非常愚蠢的错误: 该行: 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)