python3 通过 pymysql 操作 mysql 数据库

著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

       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 树(一):简介

你可能感兴趣的:(python3 通过 pymysql 操作 mysql 数据库)