(来自菜鸟教程)连接数据库前,请先确认以下事项:
1、您已经创建了数据库 TESTDB. 在TESTDB数据库中您已经创建了表 EMPLOYEE
2、EMPLOYEE表字段为 FIRST_NAME, LAST_NAME, AGE, SEX 和 INCOME。
3、连接数据库TESTDB使用的用户名为 “testuser” ,密码为"test123",你可以可以自己设定或者直接使用root用户名及其密码。
4、Mysql数据库用户授权请使用Grant命令。
5、在你的机子上已经安装了 Python MySQLdb 模块。
(如果未安装,请参考
Python操作数据库mysql服务–安装篇)
1、安装mysql server
下载地址:[https://dev.mysql.com/downloads/file/?id=479097]
安装过程较为简单,此处不做赘述。
别忘记开启相关服务。
2、按照上述要求创建数据库、表、以及用户
笔者用的是:Navicat Premium【版本11.2.16(64-bit)】
右键点击localhost,选择创建数据库,输入数据库名字:TESTDB
然后双击数据库,点击选项:表,右键–新建表:EMPLOYEE
依次创建: FIRST_NAME, LAST_NAME, AGE, SEX 和 INCOME
进入服务器控制台(快捷方式F6),输入以下语句创建用户:
mysql> grant all privileges on *.* to 'testuser'@'%' identified by 'test123';
出现以下提示,表示创建成功:
Query OK, 0 rows affected
刷新一下:
mysql> flush privileges;
验证:
找到localhost–mysql(数据库)–user(表)
双击user表,查看是否创建成功:
3、实例
import pymysql
#打开数据库连接(也可以不加port=3306)
db=pymysql.connect(host="localhost",user="testuser",password="test123",db="TESTDB",port=3306)
#使用cursor()方法创建一个游标对象cursor
cursor=db.cursor()
#使用execute()方法执行sql查询
cursor.execute("SELECT VERSION()")
#使用fetchone()方法获取单条数据
data=cursor.fetchone()
print("Database version : %s"%data)
#关闭数据库连接
db.close()
执行以上脚本,输出结果如下:
常见问题汇总:
1、报错:AttributeError: module ‘pymysql’ has no attribute ‘connect’
这个是因为笔者脚本保存为pymysql导致重名,所以将脚本改为其他命名就不再报错了。
2、pymysql.err.OperationalError: (1045, “Access denied for user ‘root’@‘localhost’ (using password: YES)”)
此类报错多半是创建的用户名和密码等与数据库不符合导致无法连接的问题。
3、pymysql.err.OperationalError: (1045, “Access denied for user ‘root’@‘localhost’ (using password: NO)”)
此前笔者用root账号,默认没有密码,就写密码为空,报错。
password=“”
4、pymysql.err.OperationalError: (2003, “Can’t connect to MySQL server on ‘localhost’ ([WinError 10061] 由于目标计算机积极拒绝,无法连接。)”)
此前有人在网上贴出代码,port=3307,报此错误,这边mysql数据库默认连接端口号:3306。
暂时就遇到这些坑,但愿能帮上你!