简介
MySQL是一个非常流行和普及的数据库服务器,它使用的是SQL语言,因此在学习本文前要具有一定的SQL语言的基础。本文将会介绍通过Python的方式连接并操作MySQL服务器,完成增、删、查、改的操作。
安装
通过第三方模块pymysql可以实现python操作MySQL服务器,因此首先要安装这个模块:
1 |
pip install pymysql |
在python下输入如下语句,检测是否安装成功:
1 |
>>>import pymysql |
如果成功导入,说明安装成功。
连接数据库
链接MySQL数据库的语句格式如下:
1 2 |
import pymysql mydb = pymysql.connect(host=主机名或地址, user=账号, passwd=密码, db=数据库名) |
假如我们现在的服务器地址是127.0.0.1,账号为root,密码也是root,数据库名为people。
代码演示:
1 2 3 4 |
>>>import pymysql >>>mydb = pymysql.connect(host='127.0.0.1', user='root', passwd='root', db='people') >>>mydb <pymysql.connections.Connection at 0x167a156f2b0> |
可以看出mydb是一个连接对象。在上面中也可以不指定连接哪个数据库,直接连接到MySQL服务器。
1 2 |
>>>import pymysql >>>mydb = pymysql.connect(host='127.0.0.1', user='root', passwd='root') |
直接省略db
参数即可。
执行SQL语句
成功连接MySQL服务器后,我们还需要进一步操作数据库和数据表,其中有两种操作类型:
- 没有结果返回的操作:比如创建数据库、创建数据表、删除数据库、数据表等;
- 有结果返回的操作:查看数据表等。
没有结果返回的操作
这类操作数据库的语句格式如下:
1 2 |
变量1 = 连接数据库 变量1.query(SQL语句) |
或者如下:
1 2 3 |
变量1 = 连接数据库 变量2 = 变量1.cursor() 变量2.execute(SQL语句) |
我们以创建一个people数据库为例。
代码演示:
1 2 3 4 |
import pymysql mydb = pymysql.connect(host='127.0.0.1', user='root', passwd='root') data = mydb.cursor() data.execute("create database people") |
在MySQL服务器中能看到创建的people数据库:
紧接着我们在这个数据库中创建一个student的数据表,用来记录学生的姓名、年龄、性别。
代码演示:
1 2 3 4 |
import pymysql mydb = pymysql.connect(host='127.0.0.1', user='root', passwd='root', db='people') data = mydb.cursor() data.execute("create table student(id int(32)auto_increment primary key, name varchar(64), age int(32), gender varchar(64))") |
首先选择people数据库,然后调用创建数据表的命令。在MySQL服务器中能看到创建的student数据表:
我们想在表中插入如下数据:
1 2 3 |
name: xiaoming age: 12 gender: male name: xiaohong age: 11 gender: female name: xiaozhang age: 13 gender: male |
首先要构建一个列表,将这三条记录以字典的形式存进这个列表中。
1 2 3 |
[{"name": "xiaoming", "age": "12", "gender": "male"}, {"name": "xiaohong", "age": "11", "gender": "female"}, {"name": "xiaozhang", "age": "13", "gender": "male"}] |
接下来我们就将这三条记录存进people数据库中。
代码演示:
1 2 3 4 5 6 7 8 9 10 11 |
import pymysql students = [{"name": "xiaoming", "age": "12", "gender": "male"}, {"name": "xiaohong", "age": "11", "gender": "female"}, {"name": "xiaozhang", "age": "13", "gender": "male"}] mydb = pymysql.connect(host='127.0.0.1', user='root', passwd='root', db='people') data = mydb.cursor() for i in range(len(students)): person = students[i] name = person["name"] age = person["age"] gender = person["gender"] data.execute("insert into student(name,age,gender) values('"+name+"','"+age+"', '"+gender+"')") |
我们可以查看MySQL服务器中people数据库的student数据表,生成了插入的数据:
有结果返回的操作
有结果返回的操作语句格式如下:
1 2 3 4 5 |
变量1 = 连接数据库 变量2 = 变量1.cursor() 变量2.execute(SQL语句) for i in 变量2: code block |
其实就是通过for
循环查看变量2的内容。我们以实现查询数据表student功能为例。
代码演示:
1 2 3 4 5 6 |
import pymysql mydb = pymysql.connect(host='127.0.0.1', user='root', passwd='root', db='people') data = mydb.cursor() data.execute("select * from student") for i in data: print(i) |
结果为:
1 2 3 |
(1, 'xiaoming', 12, 'male') (2, 'xiaohong', 11, 'female') (3, 'xiaozhang', 13, 'male') |
可以看出返回的是一个元组,元组的目的就是防止数据被随意篡改。
总结
本文介绍了在python中操作MySQL的方法,可以看出python调用SQL的语句是比较简单的。熟练掌握SQL语言是前提,python只是提供了一个调用SQL语言的接口而已。