When trying to connect to my local server (making a database entry - registration of a new user within a flask app) I'm getting the following error:
**_mysql_exceptions.OperationalError: (2059, <NULL>)**
Screenshot of the error Traceback
传递后,将Ajax对象响应解析为数组这是MySQL导入Python:
from flask_mysqldb import MySQL
MySQL配置:
# Config MySQL
app.config["MYSQL_DATABASE_HOST"] = "localhost"
app.config["MYSQL_DATABASE_USER"] = "root"
app.config["MYSQL_DATABASE_PASSWORD"] = "<password_ph>"
app.config["MYSQL_DATABASE_DB"] = "myfirstdb"
app.config["MYSQL_DATABASE_CURSORCLASS"] = "DictCursor"
# init MYSQL
mysql = MySQL(app)
这是MySQL的用法(下面的代码在Python的注册函数中)
# Create cursor
cur = mysql.connection.cursor()
# Execute query
cur.execute("INSERT INTO myfirstdb.firstflaskapp(name, email, username, password) VALUES(%s, %s, %s, %s)", (name, email, username, password))
# Commit to DB
mysql.connection.commit()
# Close connection
cur.close()
该错误似乎在以下行中弹出:
cur = mysql.connection.cursor()
知道还有什么可能导致这个错误吗?非常感谢提前
答案 0 :(得分:2)
谢谢@ dominik-remetei,如果您不想降级MySQL,那是对的,此外您还可以使用mysql.connector: pip安装mysql-connector-python
将MySQL导入到Python:
from flask import Flask
from flask_mysqldb import MySQL
import mysql.connector
MySQL配置:
#config my db
db = mysql.connector.connect(
host="localhost",
user="root",
passwd="<password_ph>",
database='myfirstdb'
)
mysql = MySQL(app)
这里是您的路线中MySQL的用法:
cur = db.cursor()
cur.execute('insert into ...')
db.commit()
db.close()
答案 1 :(得分:0)
这里有同样的错误。 在我的案例中,问题是MySql的版本。
Mysql版本8与flask-sqlalchemy不兼容。
我把它降级到5.7.22并且一切正常。