python连接数据库失败怎么解决

Python (191) 2023-06-24 16:35:36

Python 连接数据库失败怎么解决?

什么是 PyMySQL?

PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。

PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库。

在使用 PyMySQL 之前,我们需要确保 PyMySQL 已安装。

PyMySQL 下载地址:https://github.com/PyMySQL/PyMySQL。

相关推荐:《Python教程》

如果还未安装,我们可以使用以下命令安装最新版的 PyMySQL:

$pip3installPyMySQL

以下实例链接 Mysql 的 TESTDB 数据库:

#!/usr/bin/python3
importpymysql
#打开数据库连接
db=pymysql.connect("localhost","testuser","test123","TESTDB")
#使用cursor()方法创建一个游标对象cursor
cursor=db.cursor()
#使用execute()方法执行SQL查询
cursor.execute("SELECTVERSION()")
#使用fetchone()方法获取单条数据.
data=cursor.fetchone()
print("Databaseversion:%s"%data)
#关闭数据库连接
db.close()

报错如下:

Traceback(mostrecentcalllast):
File"/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pymysql/connections.py",line582,
inconnect
**kwargs)
File"/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/socket.py",line727,increate_connection
raiseerr
File"/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/socket.py",line716,increate_connection
sock.connect(sa)
ConnectionRefusedError:[Errno61]Connectionrefused

Duringhandlingoftheaboveexception,anotherexceptionoccurred:

Traceback(mostrecentcalllast):
File"mysql_conn.py",line6,in<module>
db=pymysql.connect("localhost","root","201995zjh","ryan")
File"/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pymysql/__init__.py",line94,
inConnect
returnConnection(*args,**kwargs)
File"/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pymysql/connections.py",line327,
in__init__
self.connect()
File"/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pymysql/connections.py",line629,
inconnect
raiseexc
pymysql.err.OperationalError:(2003,"Can'tconnecttoMySQLserveron'localhost'([Errno61]Connectionrefused)")

在确定安装了 PyMySQL 以及数据库账号密码等没有问题时,还是不能连接 MySQL,

最后只剩下两种可能:

1. 运行 mysqladmin variables | grep socket 来获取套接字所在的位置,并尝试设置如下连接:

pymysql.connect(db='base',user='root',passwd='pwd',unix_socket="/tmp/mysql.sock")

2. 运行 mysqladmin variables | grep port 并验证端口是3306.如果没有,您可以手动设置端口,如下所示:

pymysql.connect(db='base',user='root',passwd='pwd',host='localhost',port=XXXX)
THE END

发表回复