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):
		#python学习交流群:711312441
        #连接数据库
        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

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python中的mysql操作教程及实例 - Python技术站

(0)
上一篇 2023年4月2日 下午4:08
下一篇 2023年4月2日

相关文章

  • python中可以处理word文档的模块:docx模块

    一.docx模块 Python可以利用python-docx模块处理word文档,处理方式是面向对象的。也就是说python-docx模块会把word文档,文档中的段落、文本、字体等都看做对象,对对象进行处理就是对word文档的内容处理。 二.相关概念 如果需要读取word文档中的文字(一般来说,程序也只需要认识word文档中的文字信息),需要先了解pyth…

    Python开发 2023年3月31日
    00
  • python进程池中的回调函数

    什么是回调函数 指定一个任务后、并且指定一个回调函数后,当指定的进程池执行的任务结束后,会将该任务的返回值作为回调函数的参数传递到回调函数中,并且回调函数得以执行 回调函数在主进程中被执行 import os from multiprocessing import Pool def func1(n): print(‘in func1’, os.getpid(…

    python 2023年4月17日
    00
  • Python中的sort()方法使用基础

    一、基本形式 sorted(iterable[, cmp[, key[, reverse]]]) iterable.sort(cmp[, key[, reverse]]) 参数解释: (1)iterable指定要排序的list或者iterable,不用多说; (2)cmp为函数,指定排序时进行比较的函数,可以指定一个函数或者lambda函数,如: stude…

    Python开发 2023年4月2日
    00
  • Python中的交互库-os库

    一.介绍 os库是与操作系统相关的库,它提供了通用的基本的操作系统交互功能。os库是Python的标准库之一,它里面包含几百个处理函数,能够处理与操作系统相关的功能,包括路径操作、进程管理、环境参数设置等几类功能。其中路径操作是利用os.path子库,它用于处理文件以及目录的路径,并获得相关的信息;进程管理指启动系统中的其它程序的功能;环境参数指获得系统软硬…

    python 2023年5月10日
    00
  • Python推导式创建数列的方法

    一、列表推导式 列表推导式生成列表对象,语法如下: ”’ [表达式 for item in 可迭代对象] 或者 [表达式 for item in 可迭代对象 if 条件判断] ”’ 例子 l1 = [x for x in range(5)] print(l1) # [0, 1, 2, 3, 4] l2 = [x*2 for x in range(1,5)…

    Python开发 2023年4月2日
    00
  • Python中 re.compile 函数的使用

    以下介绍在python的re模块中怎样应用正则表达式 1. 使用re.compile re模块中包含一个重要函数是compile(pattern [, flags]) ,该函数根据包含的正则表达式的字符串创建模式对象。 可以实现更有效率的匹配。在直接使用字符串表示的正则表达式进行search,match和findall操作时,python会将字符串转换为正则…

    Python开发 2023年3月31日
    00
  • 43道Python经典案例题(有答案)

    1.有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少? for x in range(0,5): for y in range(0,5): for z in range(0,5): if x != y and y != z and z != x: print(x,y,z) 2.题目:企业发放的奖金根据利润提成。 解析: 利润(I…

    Python开发 2023年4月2日
    00
  • 什么是Python装饰器?

    装饰器是Python中非常重要的一个概念,如果你会Python的基本语法,你可以写出能够跑通的代码,但是如果你想写出高效、简洁的代码,我认为离不开这些高级用法,当然也包括本文要讲解的装饰器,就如同前面提到的代码调试神器PySnooper一样,它就是主要通过装饰器调用的方式对Python代码进行调试。 1.什么是Python装饰器? 顾名思义,从字面意思就可以…

    Python开发 2023年3月31日
    00
合作推广
合作推广
分享本页
返回顶部