本文介绍Python3使用PyMySQL连接数据库,并实现简单的增删改查。
什么是PyMySQL?
PyMySQL是Python3.x版本中用于连接MySQL服务器的一个库,Python2.x中则使用mysqldb。
PyMySQL安装
在使用PyMySQL之前,我们需要确保PyMySQL已经安装。
PyMySQL下载地址:https://github.com/PyMySQL/PyMySQL。
如果还未安装,我们可以使用以下命令安装最新版的PyMySQL:
如果你的系统不支持pip命令,可以使用以下方式安装:
1、使用git命令下载安装包安装(你也可以手动下载):
$ git clone https://github.com/PyMySQL/PyMySQL
$ cd PyMySQL
$ python3 setup.py install
2、如果需要制定版本号,可以使用curl命令来安装:
$ # X.X 为PyMySQL 的版本号
$ curl -L https://github.com/PyMySQL/PyMySQL/tarball/pymysql-X.X | tar xz
$ cd PyMySQL*
$ python3 setup.py install
注意:请确保您有root权限来安装上述模块。
3、数据库连接
连接数据库前,请先确认以下事项:
- 您已经创建数据库TESTDB
- 在TESTDB数据库中您已经创建了表EMPLOYEE
- EMPLOYEE表字段为FIRST_NAME,LAST_NAME,AGE,SEX和INCOME
- 连接数据库TESTDB使用的用户名为“testuser”,密码为“test123”,你可以自己设定或者直接使用root用户名及其密码,Mysql数据库用户授权请使用Grant命令
- 在你的机子上已经安装了PyMySQL模块
实例:
以下实例链接Mysql的TESTDB数据库:
#!/usr/bin/python3
__author__ = 'mayi'
import pymysql
# 打开数据库连接
db = pymysql.connect("localhost","testuser","test123","TESTDB" )
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
# 使用 execute() 方法执行 SQL 查询
cursor.execute("SELECT VERSION()")
# 使用 fetchone() 方法获取单条数据.
data = cursor.fetchone()
print ("Database version : %s " % data)
# 关闭数据库连接
db.close()
4、创建数据库表
如果数据库连接存在我们可以使用execute()方法来为数据库创建表,如下所示创建表EMPLOYEE:
#!/usr/bin/python3
__author__ = 'mayi'
import pymysql
# 打开数据库连接
db = pymysql.connect("localhost","testuser","test123","TESTDB" )
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
# 使用 execute() 方法执行 SQL,如果表存在则删除
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
# 使用预处理语句创建表
sql = """CREATE TABLE EMPLOYEE (
FIRST_NAME CHAR(20) NOT NULL,
LAST_NAME CHAR(20),
AGE INT,
SEX CHAR(1),
INCOME FLOAT )"""
cursor.execute(sql)
# 关闭数据库连接
db.close()
5、数据库插入操作
以下实例使用执行SQL Insert语句向表EMPLOYEE插入记录:
#!/usr/bin/python3
__author__ = 'mayi'
import pymysql
# 打开数据库连接
db = pymysql.connect("localhost","testuser","test123","TESTDB" )
# 使用cursor()方法获取操作游标
cursor = db.cursor()
# SQL 插入语句
sql = """INSERT INTO EMPLOYEE(FIRST_NAME,
LAST_NAME, AGE, SEX, INCOME)
VALUES ('Mac', 'Mohan', 20, 'M', 2000)"""
try:
# 执行sql语句
cursor.execute(sql)
# 提交到数据库执行
db.commit()
except:
# 如果发生错误则回滚
db.rollback()
# 关闭数据库连接
db.close()
以上例子也可以写成如下形式:
#!/usr/bin/python3
__author__ = 'mayi'
import pymysql
# 打开数据库连接
db = pymysql.connect("localhost","testuser","test123","TESTDB" )
# 使用cursor()方法获取操作游标
cursor = db.cursor()
# SQL 插入语句
sql = "INSERT INTO EMPLOYEE(FIRST_NAME, \
LAST_NAME, AGE, SEX, INCOME) \
VALUES ('%s', '%s', '%d', '%c', '%d' )" % \
('Mac', 'Mohan', 20, 'M', 2000)
try:
# 执行sql语句
cursor.execute(sql)
# 执行sql语句
db.commit()
except:
# 发生错误时回滚
db.rollback()
# 关闭数据库连接
db.close()
6、数据库查询操作
Python查询Mysql使用fetchone()方法获取单条数据,使用fetchall()方法获取多条数据。
- fetchone():该方法获取下一个查询结果集。结果集是一个对象
- fetchall():接收全部的返回结果行
- rowcount:这是一个只读属性,并返回执行execute()方法后影响的行数
实例:
查询EMPLOYEE表中salary(工资)字段大于1000的所有数据:
#!/usr/bin/python3
__author__ = 'mayi'
import pymysq