mysql - Mysql 与 Flask python 3.7 的连接出现了一些问题
问题描述
环境:
在我的本地计算机上:Python 3.7.7 Flask 1.1.2 Werkzeug 1.0.1
远程服务器:Ubuntu MariaDB 10.1.44
问题:
我正在本地计算机上使用 Flask 开发一个 Web 应用程序,它需要访问我的远程 Mysql 服务器。我在浏览器上收到此错误消息:
MySQLdb._exceptions.OperationalError
MySQLdb._exceptions.OperationalError: (1045, "Access denied for user 'Nino'@'lneuilly-657-1-15-173.w193-248.abo.wanadoo.fr' (using password: YES)")
我尝试了什么:
我在我的 Plesk 仪表板中启用了对 Mysql 服务器的远程访问。我为我的 Mysql 用户授予了完全权限。我在一个成功的 python 文件上使用正常的 MySQL 连接进行了测试。请参阅下面我尝试的代码:
try:
import mysql.connector
mydb = mysql.connector.connect(
host="217.1.1.1",
port=3306,
user="John",
passwd="123456",
database="wp_fi1lb"
)
mycursor = mydb.cursor()
print("Mysql connection 1 succesfull")
except ValueError:
print("Error mysql connection 1")
from flask import Flask, render_template, url_for, flash, redirect
from flask_mysqldb import MySQL
app = Flask(__name__)
try:
app.config['SECRET_KEY']='secret'
app.config['MYSQL_HOST']='217.1.1.1'
app.config['MYSQL_USERNAME']='John'
app.config['MYSQL_PASSWORD']='123456'
app.config['MYSQL_DB']='wp_fi1lb'
app.config['MYSQL_CURSORCLASS']='DictCursor'
mysql = MySQL(app)
cursor=mysql.connection.cursor()
print("Mysql connection 2 succesfull")
except ValueError:
print("Error mysql connection 2")
并查看输出:
Mysql connection 1 succesful
Traceback (most recent call last):
File "c:/wamp64/www/dashboard/test.py", line 30, in <module>
cursor=mysql.connection.cursor()
AttributeError: 'NoneType' object has no attribute 'cursor'
您可以看到连接到 MySQL 数据库的第一种方式是成功的,而第二种方式则失败了。
所以我在谷歌搜索后尝试了另一种方法。这次我使用了flask-mysql而不是flask-mysqldb:
try:
import mysql.connector
mydb = mysql.connector.connect(
host="217.1.1.1",
port=3306,
user="John",
passwd="123456",
database="wp_fi1lb"
)
mycursor = mydb.cursor()
print("Mysql connection 1 succesfull")
except ValueError:
print("Error mysql connection 1")
from flask import Flask, render_template, url_for, flash, redirect
#from flask_mysqldb import MySQL
from flaskext.mysql import MySQL
app = Flask(__name__)
try:
app.config['SECRET_KEY']='secret'
app.config['MYSQL_DATABASE_HOST']='217.1.1.1'
app.config['MYSQL_DATABASE_PORT']='3306'
app.config['MYSQL_DATABASE_USERNAME']='John'
app.config['MYSQL_DATABASE_PASSWORD']='123456'
app.config['MYSQL_DATABASE_DB']='wp_fi1lb'
app.config['MYSQL_DATABASE_CURSORCLASS']='DictCursor'
mysql = MySQL(app)
#cursor=mysql.connection.cursor()
cursor = mysql.get_db().cursor()
print("Mysql connection 2 succesfull")
except ValueError:
print("Error mysql connection 2")
输出:
Mysql connection 1 succesfull
Traceback (most recent call last):
File "c:/wamp64/www/dashboard/test.py", line 33, in <module>
cursor = mysql.get_db().cursor()
AttributeError: 'NoneType' object has no attribute 'cursor'
如您所见,我们有完全相同的问题。
我不明白我做错了什么?如果可以连接 mysql.connector,为什么要使用 flask-mysqldb?
解决方案
推荐阅读
- javascript - 更新工作表、创建 PDF、pdf 中的旧数据(谷歌应用脚本)
- git - 如何在不删除分支的情况下将分支重置为另一个分支的基础
- botframework - 保护 LUIS 和 QnaMaker 的端点
- java - Groovy 字节文字拼图
- android - Android EditText 检测输入的表情符号
- c# - 当目标不再可见时,音乐不会停止播放(Object Reco)
- javascript - D3- understanding the calling object for the d3 call() method
- javascript - 迁移到 Gulp 4,[不创建脚本和运行服务器。没有错误显示]
- python - 如何根据字典列表中的特定值在单独的 Dataframe 列中创建列表?
- javascript - 在反应中从功能组件传递真/假状态