【问题标题】:Python Flask-Mysql KeyError: 'MYSQL_HOST'Python Flask-Mysql KeyError: 'MYSQL_HOST'
【发布时间】:2021-09-28 12:08:50
【问题描述】:

我正在构建一个 python flask-Mysql 应用程序。我正在使用 AWS cloud9 构建它。但是当我运行代码时,我得到了 MYSQL_HOST 键错误。 我在下面附上代码。 是安装错误还是代码错误?`

from flask import Flask, request, render_template
from flask_mysqldb import MySQL


application = Flask(__name__)

application.config['MYSQL_HOST'] = 'localhost'
application.config['MYSQL_USER'] = 'nfhfjfn'
application.config['MYSQL_PASSWORD'] = 'fsfc'
application.config['MYSQL_DB'] = 'fsvf'
application.config['MYSQL_CURSORCLASS'] = 'DictCursor'
mysql = MySQL(application)
# mysql.init_app(application)

application = Flask(__name__)

@application.route("/")
def hello():
    cursor = mysql.connect().cursor()
    cursor.execute("SELECT * from LANGUAGES;")
    mysql.connection.commit()
    languages = cursor.fetchall()
    languages = [list(l) for l in languages]
    return render_template('index.html', languages=languages)
    
    
if __name__ == "__main__":
    application.run(host='0.0.0.0',port=8080, debug=True)

`

【问题讨论】:

  • 完整的错误信息是什么?它出现在哪一行?
  • @Marcin 这是最后一行文件“/home/ubuntu/.local/lib/python3.6/site-packages/flask_mysqldb/__init__.py”,第 43 行,如果 current_app. config['MYSQL_HOST']: KeyError: 'MYSQL_HOST'

标签: python amazon-web-services amazon-ec2 flask-mysql


【解决方案1】:

你打电话给application = Flask(__name__)两次。所以第二次你覆盖了第一个application。应该是:

from flask import Flask, request, render_template
from flask_mysqldb import MySQL


application = Flask(__name__)

application.config['MYSQL_HOST'] = 'localhost'
application.config['MYSQL_USER'] = 'nfhfjfn'
application.config['MYSQL_PASSWORD'] = 'fsfc'
application.config['MYSQL_DB'] = 'fsvf'
application.config['MYSQL_CURSORCLASS'] = 'DictCursor'
mysql = MySQL(application)
# mysql.init_app(application)

#application = Flask(__name__) <--- remove that

@application.route("/")
def hello():
    cursor = mysql.connect().cursor()
    cursor.execute("SELECT * from LANGUAGES;")
    mysql.connection.commit()
    languages = cursor.fetchall()
    languages = [list(l) for l in languages]
    return render_template('index.html', languages=languages)
    
    
if __name__ == "__main__":
    application.run(host='0.0.0.0',port=8080, debug=True)

【讨论】:

    猜你喜欢
    • 2015-04-12
    • 1970-01-01
    • 2021-03-22
    • 2021-07-21
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    • 2020-07-13
    • 2019-05-10
    相关资源
    最近更新 更多