python中的mysql操作

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


存测试数据

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

存测试结果

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


2|11. 安装:pyMysql


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

 

2|22. 安装步骤


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/

 

2|33. 数据库的常规操作


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

 

3|0三. 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()  每次操作都需要获取游标,才能进行

 

4|0四. python之查询数据


4|11. 查询数据语法


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

 

4|22. 展示数据,需要调用如下函数


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

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

 

4|33. 条件语句的用法


重点看代码,掌握用法

 

5|0五. 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)

 

6|0六. 提交和回滚


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

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

提交修改:

  conn.commit()

 

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

回滚修改:

  conn.rollback()

7|0七. 实例


7|1实例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()

运行结果:

7|2实例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'}]

7|3实例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()

运行结果

7|4实例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

 


__EOF__

本文作者cnhkzyy
本文链接https://www.cnblogs.com/my_captain/p/9294420.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   cnhkzyy  阅读(505)  评论(1编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2017-07-11 《Advanced Bash-scripting Guide》学习(十八):[[ ]]与[ ]的一些特殊情况
点击右上角即可分享
微信分享提示