美文网首页
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