0

编辑 1 我在数字海洋上创建了一个托管的 mysql 实例,我收到了一个新错误。

我得到以下 TypeError: an integer is required (got type str)

我有一个正在开发的烧瓶应用程序,但在使用 flask_mysqldb 时出现错误

这是我收到的错误

KeyError: 'MYSQL_UNIX_SOCKET'

我的目录结构是

  • main.py
  • auth.py
  • website
    • templates
    • static
    • __init__.py

在我的init .py 中,我有以下内容

from flask import Flask
from flask_mysqldb import MySQL

def create_app():
    app = Flask(__name__)
    app.config['MYSQL_USER'] = 'flask'
    app.config['MYSQL_PASSWORD'] = 'mypw'
    app.config['MYSQL_HOST'] = 'localhost'
    app.config['MYSQL_DB'] = 'flask_test'
    app.config['MYSQL_CURSORCLASS'] = 'DictCursor'
    app.config['MYSQL_PORT'] = '3306'

    from views import views
    from auth import auth

    app.register_blueprint(views, url_prefix='/')
    app.register_blueprint(auth, url_prefix='/')

    return app

在我的 auth.py 中,您可以看到我正在尝试将结果打印到控制台。

如果我将 mysql 的代码移动到我的 main.py 中,它确实可以工作并且我能够打印出数据。只有当我尝试在我的 auth.py 中使用 mysql 代码时,我才会收到错误消息。

from flask import Blueprint, render_template, request, flash
from flask_mysqldb import MySQL
auth = Blueprint('auth', __name__)

@auth.route('/sign-up', methods=['GET', 'POST'])
def sign_up():
    mysql = MySQL()
    cur = mysql.connection.cursor()
    cur.execute('''SELECT * FROM peeps''')
    results = cur.fetchall()
    print(results)

    return render_template("sign_up.html")
4

2 回答 2

0

我为端口号提供了一个字符串,而不是一个整数

于 2021-07-13T17:29:27.983 回答
0

因为the app.config['MYSQL_HOST'] = 'localhost',您正在使用 unix socket 连接 mysql。您可以将 MYSQL_HOST 更改为ipaddress ,以便用于TCP/IP连接 mysql。

于 2021-07-08T00:17:42.777 回答