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)