美文网首页
python3 通过 pymysql 操作 mysql 数据库

python3 通过 pymysql 操作 mysql 数据库

作者: 蓝天白云bubble | 来源:发表于2019-02-23 22:09 被阅读0次

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

       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 数据库

      本文链接:https://www.haomeiwen.com/subject/gxvpyqtx.html