PyMQL简单使用【入门CRUD】

pymysql是python3中的mysqldb(python2) 在使用这个库之前,首先你得确保自己会使用基本的SQL语句,对MySQL数据库具有一定的了解(基本即可)。

一、安装

通过pip进行安装:

1
pip install pymysql
二、通过数据库可视化程序/终端建数据库和表

​ pymysql在使用之前,需要通过数据库可视化程序/终端建立数据库

三、使用pymysql操作数据库
  1. 连接数据库: 我们通过一下必填参数连接数据库:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    # 连接Mysql
    conn = pymysql.connect(
    host='127.0.0.1',
    user='自定义用户名(root)',
    password="自定义密码",
    database='数据库名称',
    port=3306,
    charset='utf8'
    )
    其中的host,user,password,port,database均为定位到数据库所需要的参数,而charset用于指定该数据库的编码格式,需要与建立数据库的时候(create database 数据库名称 charset=’xxxx’)保持一致(一般为utf8)
  2. 获取游标对象: 连接成功后我们可以通过conn拿到其中的cursor对象,该对象即为执行SQL语句以及拿到相关结果的操作对象,也就是直译的游标对象。
    1
    2
    # 创建游标对象
    cursor = conn.cursor()
  3. 编写SQL语句并执行: 使用pymql需要自己手动进行SQL语句的编写,而SQL语句的基本增删改查语句中,只有查询语句不会被数据库造成影响,其他语句则均会对数据库产生作用效果。 pymysql为了避免由于出现异常或者错误情况而导致数据库出现状况,所有对数据库造成实际影响的语句,均需要通过 ```con.commit()```方法来提交所有的变更。 另外pymysql在执行SQL语句的方法 ```cursor.execute()```方法中,可以多输入一个参数,这个参数可以是数组(list)/元组(tuple)/字典(dict),pymysql会在内部对该参数进行处理,并自动将其处理为对应完整SQL语句。 接下来的语句中也将分别使用数组/元组/dict三种形式来演示相关的写法,同时这三者是通用的。 注意一下语句,插入表为info,该表具有id,name,age,gender四个属性,可自信修改为自己所需要的属性。
  • 查询语句
    1
    2
    3
    4
    # 编写SQL语句
    sql = 'select * from info' # 表名请自行修改为自定义参数
    # 纯字符串模式,单参数
    cursor.execute(sql)
  • 插入语句
    1
    2
    3
    4
    5
    # 编写增加的sql语句
    sql = "insert into info(name,age,gender) values (%s,%s,%s)"
    # 使用数组进行赋值插入,即第二个参数使用数组形式
    add_data = ['云无月', 4500, '女']
    cursor.execute(sql, add_data)
  • 修改语句
    1
    2
    3
    4
    5
    6
    # 编写修改的sql语句
    sql = "update info set name=%s where name=%s"
    # 第二个参数使用元组形式,实际上可以与上文数组写法完全一致(也可以直接自行拼接字符串)
    add_data = ('王牛蛙', '王辟邪')
    # 注意len返回的是修改的数目 也就是数据库修改时的数字返回值
    len = cursor.execute(sql, add_data)
  • 删除语句
    1
    2
    3
    4
    5
    6
    7
    8
    9
    # 注意,如果要使用dict(JSON)作为sql语句补位,那么补位的位置写法为%(key命)s
    # 如下补位为id:
    sql = "delete from info where id =%(id)s"
    add_data = {
    "name": "岑缨",
    "id" : 28
    }
    # 执行dict形式的补位
    cursor.execute(sql, add_data)
  1. 释放资源:
    1
    2
    3
    4
    # 关闭游标
    cursor.close()
    # 关闭连接
    conn.close()
  2. 异常处理与回滚: pymysql在连接的时候,就会对当前数据库进行一次快照(保留未操作初始状态),如果出现错误情况,可以通过 ```conn.rollback()```方法进行回滚。 由于数据库操作涉及到网络和其他设备的操作,所以必须需要做好异常处理。 通常我们会进行如下格式的异常处理:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # 导包
    import pymysql

    # 连接Mysql
    conn = pymysql.connect(
    host='127.0.0.1',
    user='自定义用户名(root)',
    password="自定义密码",
    database='数据库名称',
    port=3306,
    charset='utf8'
    )
    try:
    # 创建游标对象
    cursor = conn.cursor()
    # 编写增加/删除/修改的sql语句
    # 编写SQL语句,进行相关操作...
    # ...如:
    sql = "delete from info where id =%(id)s"
    add_data = {
    "name": "岑缨",
    "id" : 28
    }
    # 执行编写的SQL语句
    cursor.execute(sql, add_data)
    # 提交修改
    conn.commit()
    # 关闭,释放资源
    cursor.close()
    print("任务完成")

    except Exception as e:
    # 回滚
    conn.rollback()
    print(e)

    finally:
    conn.close()