著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
python2.x 常常通过 MySqlDB 连接 mysql 数据库,python3.x 通过 pymyql 连接数据库会更方便。由于 python3 的流行,所以这里浅谈一下 python3 通过 pymysql 连接 mysql 数据库的内容。这方面的内容相对来说比较简单,故主要通过一些具有代表性的实例来说明 python3 通过 pymysql 实现 mysql 数据库增删改查的方式。
在开始之前要确保计算机上面安装了 pymysql 模块,Ubuntu 系统可以通过如下命令安装:
pip install pymysql
python 通过 pymysql 模块操作 mysql 数据库可以总结为如下几步:
1、与数据库建立连接;
2、创建游标,并使用游标执行 mysql 语句;
3、关闭连接。
下面通过实例来一一演示说明。
一、创建表
import pymysql
# 与数据库建立连接
db = pymysql.connect(host="localhost", port=3306, user="root", password="root", database="TESTDB")
# 创建游标
cursor = db.cursor()
# 使用游标执行 mysql 语句
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
# 创建表的 mysql 语句
sql = """CREATE TABLE EMPLOYEE (
FIRST_NAME CHAR(20) NOT NULL,
LAST_NAME CHAR(20),
AGE INT,
SEX CHAR(1),
INCOME FLOAT )"""
# 使用游标执行 mysql 语句
cursor.execute(sql)
# 关闭数据库连接
db.close()
由于刚开始的时候 TESTDB 数据库中没有 EMPLOYEE 表,所以程序在执行cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
语句的时候报了如下提醒信息:
/home/jason/.local/lib/python3.5/site-packages/pymysql/cursors.py:170: Warning: (1051, "Unknown table 'TESTDB.EMPLOYEE'")
result = self._query(query)
Process finished with exit code 0
此时,去 TESTDB 数据库中查看,发现 EMPLOYEE 表已被创建。
二、向数据库中插入记录
import pymysql
# 与数据库建立连接
db = pymysql.connect(host="localhost", port=3306, user="root", password="root", database="TESTDB")
# 创建游标
cursor = db.cursor()
# SQL 插入语句
sql = """INSERT INTO EMPLOYEE(FIRST_NAME,
LAST_NAME, AGE, SEX, INCOME)
VALUES ('Mac', 'Mohan', 20, 'M', 2000)"""
try:
# 使用游标执行 mysql 语句
cursor.execute(sql)
# 只有执行了 commit() 方法,数据库中的数据才会被修改
db.commit()
except:
# 如果发生了异常,则将当前操作回滚
db.rollback()
# 关闭数据库连接
db.close()
为了方便在 sql 语句中使用变量,可以将上面的代码写成下面的形式:
import pymysql
# 与数据库建立连接
db = pymysql.connect(host="localhost", port=3306, user="root", password="root", database="TESTDB")
# 创建游标
cursor = db.cursor()
# SQL 插入语句
sql = "INSERT INTO EMPLOYEE(FIRST_NAME, \
LAST_NAME, AGE, SEX, INCOME) \
VALUES ('%s', '%s', %s, '%s', %s)" % \
('Mac', 'Mohan', 20, 'M', 2000)
try:
# 使用游标执行 mysql 语句
cursor.execute(sql)
db.commit()
except:
# 发生错误时回滚
db.rollback()
# 关闭数据库连接
db.close()
提示:
当游标建立之时,就自动开始了一个隐形的数据库事务。commit() 方法就是把当前游标的事务提交,rollback() 方法就是把当前游标还没有提交的事务进行回滚。
三、查询数据
import pymysql
# 与数据库建立连接
db = pymysql.connect(host="localhost", port=3306, user="root", password="root", database="TESTDB")
# 创建游标
cursor = db.cursor()
# SQL 查询语句
sql = "SELECT * FROM EMPLOYEE \
WHERE INCOME > %s" % (1000)
try:
# 使用游标执行 mysql 语句
cursor.execute(sql)
# 获取所有记录列表
results = cursor.fetchall()
for row in results:
fname = row[0]
lname = row[1]
age = row[2]
sex = row[3]
income = row[4]
# 打印结果
print("fname=%s,lname=%s,age=%s,sex=%s,income=%s" % \
(fname, lname, age, sex, income))
except:
print("Error: unable to fetch data")
# 关闭数据库连接
db.close()
程序执行结果如下:
fname=Mac, lname=Mohan, age=20, sex=M, income=2000
四、记录的删除操作
import pymysql
# 与数据库建立连接
db = pymysql.connect(host="localhost", port=3306, user="root", password="root", database="TESTDB")
# 创建游标
cursor = db.cursor()
# SQL 删除语句
sql = "DELETE FROM EMPLOYEE WHERE AGE > %s" % (20)
try:
# 使用游标执行 mysql 语句
cursor.execute(sql)
db.commit()
except:
# 发生错误时回滚
db.rollback()
# 关闭连接
db.close()
相关文档
http://www.runoob.com/python3/python3-mysql.html
https://pymysql.readthedocs.io/en/latest/
上一篇:Shell Script(六):条件分支语句 2
下一篇:Trie 树(一):简介