【问题标题】:How to fix KeyError: 'MYSQL_DATABASE_SOCKET' in Flask?如何修复 Flask 中的 KeyError:'MYSQL_DATABASE_SOCKET'?
【发布时间】:2020-01-14 10:59:24
【问题描述】:

我有一个Flask 应用程序,我想连接MYSQL 数据库和来自数据库的SELECT 信息。当我运行我的代码时,我遇到了以下错误:

KeyError: 'MYSQL_DATABASE_SOCKET

我的代码是:

from flaskext.mysql import MySQL
import pymysql
from flask import render_template, redirect

app = Flask(__name__)
mysql = MySQL()

# MySQL configurations
app.config['MYSQL_DATABASE_USER'] = 'root'
app.config['MYSQL_DATABASE_PASSWORD'] = ''
app.config['MYSQL_DATABASE_DB'] = 'market_DB'
app.config['MYSQL_DATABASE_HOST'] = 'localhost'
app.config['MYSQL_DATABASE_PORT'] = '3306'
mysql.init_app(app)

@app.route('/')
def product():
    conn = mysql.connect()
    cursor = conn.cursor()
    #return "ok"
    cursor.execute("SELECT * FROM Tbl_product")
    productDetails= cursor.fetchall()
    return render_template('product.html', productDetails=productDetails)

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

你能帮帮我吗?

【问题讨论】:

    标签: mysql flask mysql-python flask-mysql


    【解决方案1】:

    app.config['MYSQL_DATABASE_SOCKET'] = 无

    【讨论】:

    • 你能解释一下 - OP 在使用这个 sn-p 后可以期待什么?
    • MYSQL_DATABASE_SOCKET (unix_socket) 没有默认值。该选项必须在初始化时指定。我认为如果选项是 None 它将加载默认的 unix_socket ...
    【解决方案2】:

    您必须定义 MYSQL_DATABASE_SOCKET 变量。就我而言,我使用如下所示的 Config 类:

    class Config(object):
        SECRET_KEY = os.environ.get('SECRET_KEY') or 'you-will-never-guess'
        MYSQL_DATABASE_USER = 'root'
        MYSQL_DATABASE_PASSWORD = 'root'
        MYSQL_DATABASE_DB = 'flask'
        MYSQL_DATABASE_HOST = 'localhost'
        MYSQL_DATABASE_SOCKET = '/tmp/mysql.sock'
    

    将其传递给您的应用对象:

    app = Flask(__name__)
    app.config.from_object(Config)
    

    【讨论】:

    • 我使用了Config类,但是遇到这个错误:AttributeError: module 'socket' has no attribute 'AF_UNIX'
    • 我的问题通过使用 MYSQL_DATABASE_SOCKET = ' ' 解决了。谢谢mzignis
    猜你喜欢
    • 2016-10-30
    • 1970-01-01
    • 2019-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-08
    • 2021-10-29
    • 2021-03-22
    相关资源
    最近更新 更多