zoukankan      html  css  js  c++  java
  • python中的mysql操作

    一. 数据库在自动化测试中的应用

    存测试数据

    有的时候大批量的数据,我们需要存到数据库中,在测试的时候才能用到,测试的时候就从数据库中读取出来。这点是非常重要的!

    存测试结果

    二. python中的数据库之必备前提条件

    1. 安装:pyMysql

    python2中使用mysqldb,python3中不再支持,换成pyMysql

    2. 安装步骤

    1) 安装pyMysql模块:pip install PyMysql

    2) python连接mysql数据库,需要下载驱动:https://dev.mysql.com/downloads/connector/python/mysqlmysql官方网站提供的驱动版本,目前只支持到python3.4,python版本要与驱动支持的版本匹配才能安装成功

    3) 安装mysql图形界面Navicat,连接数据库后,方便查看/编辑数据库数据

    (可选)安装mysql服务端:https://dev.mysql.com/downloads/mysql/

    3. 数据库的常规操作

    增删改查,所以我们要学的也是利用python去数据库里面读取数据,进行增删改查操作

    三. python—mysql操作

    对数据库进行操作步骤:

    1. 连接数据库、创建游标

    2. 准备好增、删、改、查sql语句

    3. 执行sql语句

    4. 读取执行结果—执行影响的行

    5. 关闭游标、关闭连接(释放连接数)

    数据库连接信息如下:

      IP地址、端口号、数据库名字、登录用户名、密码

    pymysql中的连接数据库方法:

    conn = pymysql.Connect(host, port, db, user, passwd)

    cursorclass = pymysql.cursors.DictCursor   指定返回数据为字典形式

     

    创建游标:

    cursor = conn.cursor()  每次操作都需要获取游标,才能进行

    四. python之查询数据

    1. 查询数据语法

    sql语句:select 字段 from 表名 where 条件语句

    2. 展示数据,需要调用如下函数

    fetchall():返回的数据格式是列表形式的

    fetchone():返回的数据格式是元组形式的(可以用cursorclass = pymysql.cursors.DictCursor改成字典的形式)

    3. 条件语句的用法

    重点看代码,掌握用法

    五. python之execute

    execute中,sql语句的多种方式:

    execute(sql语句、参数[可选]):

    1. 数据直接写在sql语句中

    2. 用格式化的方式

      sql语句中:列表和元组   %s代替

            字典:%(键名)s代替

      参数:为真正的数值

    例:

    insert_sql = "insert into test1(id, name) values(%s, %s)"

    data = [14, 'xiaojian']

    #字典

    data1 = {'id': 14, 'name': 'xiaojian'}

    insert_sql = "insert into test1(id, name) values(%(id)s, %(name)s)"

    cursor.execute(insert_sql, data)

    六. 提交和回滚

    提交操作:在对数据库进行任何修改的情况下,都使用commit函数来提交操作

    修改包括增加、修改、删除数据等操作

    提交修改:

      conn.commit()

    回滚操作:在对数据库进行修改的过程中,因任何异常而导致修改中断,我们都应该使用回滚操作使数据库恢复到修改之前的状态

    回滚修改:

      conn.rollback()

    七. 实例

    实例1:增加数据

    #引入相关的库
    import pymysql
    mysql_host = "localhost"
    mysql_port = 3306
    mysql_db = "xiaozhai"
    mysql_user = "root"
    mysql_passwd = "123456"
    #连接操作:编码格式的指定,默认返回数据类型的指定 
    conn = pymysql.Connect(host=mysql_host, user=mysql_user, password=mysql_passwd,
              db
    =mysql_db, port=mysql_port, charset="utf8mb4", cursorclass=pymysql.cursors.DictCursor)

    #获取游标 cur = conn.cursor()

    #sql语句——增加数据
    sql_insert = "insert into python6(name, sex) values('xiaohua', 'female')"
    #执行sql语句
    try:
      cur.execute(sql_insert)
      conn.commit()
    except:
      conn.rollback()


    #关闭连接、关闭游标
    cur.close()
    conn.close()

    运行结果:

    实例2:查询数据

    #引入相关的库
    import pymysql
    
    mysql_host = "localhost"
    mysql_port = 3306
    mysql_db = "xiaozhai"
    mysql_user = "root"
    mysql_passwd = "123456"
    
    #连接操作:编码格式的指定,默认返回数据类型的指定
    conn = pymysql.Connect(host=mysql_host, user=mysql_user, password=mysql_passwd,
                    db=mysql_db, port=mysql_port, charset="utf8mb4",
                    cursorclass=pymysql.cursors.DictCursor)
    
    #获取游标
    cur = conn.cursor()
    
    #查询语句
    sql_select = "select * from python6"
    #执行
    cur.execute(sql_select)
    #获取查询结果——会获取一条数据
    data_a = cur.fetchone()
    print(data_a)
    print("=============================")
    #获取查询结果——获取所有条数据(游标已经到了第二条,从第二条开始读)
    data_all = cur.fetchall()
    print(data_all)
    
    #关闭连接、关闭游标
    cur.close()
    conn.close()

    运行结果

    {'id': 1, 'sex': 'male', 'name': 'xiaozhai'}
    =============================
    [{'id': 2, 'sex': 'male', 'name': 'xiaoli'}, {'id': 3, 'sex': 'female', 'name': 'xiaohua'}]

    实例3:格式化方式插入数据

    列表形式

    #引入相关的库
    import pymysql
    
    mysql_host = "localhost"
    mysql_port = 3306
    mysql_db = "xiaozhai"
    mysql_user = "root"
    mysql_passwd = "123456"
    
    #连接操作:编码格式的指定,默认返回数据类型的指定
    conn = pymysql.Connect(host=mysql_host, user=mysql_user, password=mysql_passwd,
                    db=mysql_db, port=mysql_port, charset="utf8mb4",
                    cursorclass=pymysql.cursors.DictCursor)
    
    #获取游标
    cur = conn.cursor()
    
    #格式化方式插入数据
    data_list = ["xiaozhao", "female"]
    sql_insert = "insert into python6(name, sex) values(%s, %s)"
    
    #执行sql语句
    try:
        cur.execute(sql_insert, data_list)
        conn.commit()
    except:
        conn.rollback()
    
    
    #关闭连接、关闭游标
    cur.close()
    conn.close()

    运行结果

    字典形式

    #引入相关的库
    import pymysql
    
    mysql_host = "localhost"
    mysql_port = 3306
    mysql_db = "xiaozhai"
    mysql_user = "root"
    mysql_passwd = "123456"
    
    #连接操作:编码格式的指定,默认返回数据类型的指定
    conn = pymysql.Connect(host=mysql_host, user=mysql_user, password=mysql_passwd,
                    db=mysql_db, port=mysql_port, charset="utf8mb4",
                    cursorclass=pymysql.cursors.DictCursor)
    
    #获取游标
    cur = conn.cursor()
    
    #格式化方式插入数据
    data_dict = {"name": "xiaoliu", "sex":"female"}
    sql_insert = "insert into python6(name, sex) values (%(name)s, %(sex)s)"
    
    #执行sql语句
    try:
        cur.execute(sql_insert, data_dict)
        conn.commit()
    except:
        conn.rollback()
    
    
    #关闭连接、关闭游标
    cur.close()
    conn.close()

    运行结果

    实例4:封装成类

    import pymysql
    
    class Mysql_Operate:
    
        def __init__(self, host, db, user, passwd, port=3306):
    
            #连接数据库
            try:
                self.conn = pymysql.Connect(host=host, user=user, password=passwd,
                                       db=db, port=port, charset="utf8mb4",
                                       cursorclass=pymysql.cursors.DictCursor)
                #获取游标
                self.cur = self.conn.cursor()
                #没有异常,connect_flag为0
                self.connect_flag = 0
            except Exception as e:
                print(e)
                self.connect_flag = 1
    
        #查找
        def select_all_datas(self, select_sql):
            #查询数据——execute函数
            self.cur.execute(select_sql)
            #获取所有的数据并返回
            data_all = self.cur.fetchall()
            return data_all
    
        #更新数据
        def update_datas(self, update_sql ):
            try:
                self.cur.execute(update_sql)
                self.conn.commit()
                return True
            except:
                self.conn.rollback()
                return False
    
        #关闭数据库连接
        def close_db(self):
            self.cur.close()
            self.conn.close()
    
    
    mysql_host = "localhost"
    mysql_port = 3306
    mysql_db = "xiaozhai"
    mysql_user = "root"
    mysql_passwd = "123456"
    
    ms = Mysql_Operate(mysql_host, mysql_user, mysql_passwd, mysql_db)
    if ms.connect_flag == 0:
        pass
  • 相关阅读:
    #ACsaber ——简单排序、字符串加空格、数组中的行 ~20.10.22
    #堆排序 20.09.27
    #并查集 20.09.25
    #卡特兰数 #抽屉原理 #Nim游戏 ——杂记
    #扩展欧几里得算法 ——线性同余方程 ~20.9.4
    #周测 7 —— 数的划分 、逆序对 、排座椅 、棋盘
    117. 占卜DIY
    116. 飞行员兄弟
    115.给树染色
    112.雷达设备
  • 原文地址:https://www.cnblogs.com/my_captain/p/9294420.html
Copyright © 2011-2022 走看看