项目场景:
用flask框架搭起项目,连接数据库中出现1045的问题。
问题描述
提示:确保数据库用户、密码没问题后。
在flask启动后,访问mysql的时候出现如下问题:
sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (1045, “Access denied for user ‘root’@‘localhost’ (using password: YES)”) (Background on this error at: http://sqlalche.me/e/e3q8)
sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (1045, "Access denied for user 'root'@'localhost' (using password: YES)") (Background on this error at: http://sqlalche.me/e/e3q8)
原因分析:
提示:这个问题搜了很多都是提示要更改数据库密码,还有一些是本地数据不对外开放问题,我的问题是依赖版本问题。
原因一般有几种:
- 常见问题有mysql登录出现1045的问题,这个问题很简单,更改本地的my.ini文件里面的参数即可。
- 确保数据库登录、访问没问题后,就是连接数据语句出现了错误。
解决方案:
提示:需要改掉数据连接URI地址
首先我测试了数据库登录注册有没有问题,这里从网上搜了一个pymysql连接数据库的代码。
import pymysql
def connectdb():
print("连接到mysql服务器...")
db = pymysql.connect(
host="localhost",
user="root",
passwd="123",
port=3306,
db="Graduationdesign",
charset="utf8",
cursorclass=pymysql.cursors.DictCursor
)
print("连接成功!")
return db
connectdb()
测试通过后,就可以修改URI地址,从文档找出合适当前版本的连接方法
我之前用的连接方法换到了朋友的环境下竟然不能用了,我认为是依赖版本的问题,我用的SQLAlchemy和朋友用的不一样,所以出现了问题,这里更换了URI就不会报错了。
# SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root:Password123$@localhost:3306/Graduationdesign?charset=utf8"
SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root:123@localhost:3306/Graduationdesign"
SQLAlchemy 1.4 文档地址:https://docs.sqlalchemy.org/en/14/errors.html#error-e3q8