运行学习教程里面的mysql数据库按照里面要的步骤安装pyMySQL,学习里面的内容,会出现一些疑问,我也遇到了,发现这是一个认识上错误,实例如下:
根据基础教程运行下面代码,会报错:
#!/usr/bin/python3
import pymysql
# 打开数据库连接 db = pymysql.connect("localhost","test","test","DB" ) # 使用 cursor() 方法创建一个游标对象 cursor cursor = db.cursor() # 使用 execute() 方法执行 SQL 查询 cursor.execute("SELECT VERSION()") # 使用 fetchone() 方法获取单条数据. data = cursor.fetchone() print ("Database version : %s " % data) # 关闭数据库连接 db.close()
报错内容:
Traceback (most recent call last):
File "C:\Python34\lib\site-packages\pymysql-0.7.10-py3.4.egg\pymysql\connections.py", line 916, in connect
**kwargs)
File "C:\Python34\lib\socket.py", line 512, in create_connection
raise err
File "C:\Python34\lib\socket.py", line 503, in create_connection
sock.connect(sa)
ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:/Users/*/PycharmProjects/untitled/.idea/mysql.py", line 6, in <module>
db = pymysql.connect(host="localhost",user="root",password="",db="test_pymysql",port=3306 )
File "C:\Python34\lib\site-packages\pymysql-0.7.10-py3.4.egg\pymysql\__init__.py", line 90, in Connect
return Connection(*args, **kwargs)
File "C:\Python34\lib\site-packages\pymysql-0.7.10-py3.4.egg\pymysql\connections.py", line 706, in __init__
self.connect()
File "C:\Python34\lib\site-packages\pymysql-0.7.10-py3.4.egg\pymysql\connections.py", line 963, in connect
raise exc
pymysql.err.OperationalError: (2003, "Can't connect to MySQL server on 'localhost' ([WinError 10061] 由于目标计算机积极拒绝,无法连接。)")
进程已结束,退出代码1
遇到这个问题,很难受,不知道为什么会这样,我专门去查看了各个方面的地方,耗费了2天,例如一些官方API:http://pymysql.readthedocs.io/en/latest/,英文内容,看得不容易,但是没找到原因,没看懂,堵住了。
想不通原因,后来查找资料,网上资料不少,后来看到了一个份资料,很有参考价值,可能你们看完就醒悟了:http://bbs.csdn.net/topics/391931225?page=1
总结一下前因后果:
1、认识上错误:一开始看安装步骤有安装pyMySQL,以为是一种数据库,实际上pymysql不是数据库,只是python和mysql之间起到桥梁作用,例子里面提供的账号密码一般是没有作用的,是有前提的
2、没有安装mysql数据库:有的教程只说了安装pyMySQL,没有说要安装mysql。没有说安装,大家不知道安装,不安装就报错了。安装mysql是学习python的mysql前提。
关于如何安装mysql,这边不提供,建议安装压缩包版本,需要手动配点东西,不过会比较好用,特别是要卸载mysql时。