翼度科技»论坛 编程开发 python 查看内容

python中的mysql操作教程及实例

1

主题

1

帖子

3

积分

新手上路

Rank: 1

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

存测试数据
有的时候大批量的数据,我们需要存到数据库中,在测试的时候才能用到,测试的时候就从数据库中读取出来。这点是非常重要的!
存测试结果
二. python中的数据库之必备前提条件

1. 安装:pyMysql

python2中使用mysqldb,python3中不再支持,换成pyMysql
2. 安装步骤

(可选)安装mysql服务端:https://dev.mysql.com/downloads/mysql/
3. 数据库的常规操作

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

对数据库进行操作步骤:

  • 连接数据库、创建游标

  • 准备好增、删、改、查sql语句

  • 执行sql语句

  • 读取执行结果—执行影响的行

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

数据库连接信息如下:
  1. IP地址、端口号、数据库名字、登录用户名、密码
复制代码
pymysql中的连接数据库方法:
  1. conn = pymysql.Connect(host, port, db, user, passwd)
  2. cursorclass = pymysql.cursors.DictCursor   指定返回数据为字典形式
复制代码
创建游标:
  1. cursor = conn.cursor()  每次操作都需要获取游标,才能进行
复制代码
四. python之查询数据

1. 查询数据语法

sql语句:select 字段 from 表名 where 条件语句
2. 展示数据,需要调用如下函数

fetchall():返回的数据格式是列表形式的
fetchone():返回的数据格式是元组形式的(可以用cursorclass = pymysql.cursors.DictCursor改成字典的形式)
3. 条件语句的用法

重点看代码,掌握用法
五. python之execute

execute中,sql语句的多种方式:
execute(sql语句、参数[可选]):

  • 数据直接写在sql语句中

  • 用格式化的方式

  1. sql语句中:列表和元组   %s代替
  2.      字典:%(键名)s代替
  3. 参数:为真正的数值
复制代码
例:
  1. insert_sql = "insert into test1(id, name) values(%s, %s)"
  2. data = [14, 'xiaojian']
  3. #字典
  4. data1 = {'id': 14, 'name': 'xiaojian'}
  5. insert_sql = "insert into test1(id, name) values(%(id)s, %(name)s)"
  6. cursor.execute(insert_sql, data)
复制代码
六. 提交和回滚

提交操作:在对数据库进行任何修改的情况下,都使用commit函数来提交操作
修改包括增加、修改、删除数据等操作
提交修改:
  1. conn.commit()
复制代码
回滚操作:在对数据库进行修改的过程中,因任何异常而导致修改中断,我们都应该使用回滚操作使数据库恢复到修改之前的状态
回滚修改:
  1. conn.rollback()
复制代码
七. 实例

实例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()
复制代码
运行结果:

实例2:查询数据

  1. #引入相关的库
  2. import pymysql
  3. mysql_host = "localhost"
  4. mysql_port = 3306
  5. mysql_db = "xiaozhai"
  6. mysql_user = "root"
  7. mysql_passwd = "123456"
  8. #连接操作:编码格式的指定,默认返回数据类型的指定
  9. conn = pymysql.Connect(host=mysql_host, user=mysql_user, password=mysql_passwd,
  10.                 db=mysql_db, port=mysql_port, charset="utf8mb4",
  11.                 cursorclass=pymysql.cursors.DictCursor)
  12. #获取游标
  13. cur = conn.cursor()
  14. #查询语句
  15. sql_select = "select * from python6"
  16. #执行
  17. cur.execute(sql_select)
  18. #获取查询结果——会获取一条数据
  19. data_a = cur.fetchone()
  20. print(data_a)
  21. print("=============================")
  22. #获取查询结果——获取所有条数据(游标已经到了第二条,从第二条开始读)
  23. data_all = cur.fetchall()
  24. print(data_all)
  25. #关闭连接、关闭游标
  26. cur.close()
  27. conn.close()
复制代码
运行结果
  1. {'id': 1, 'sex': 'male', 'name': 'xiaozhai'}
  2. =============================
  3. [{'id': 2, 'sex': 'male', 'name': 'xiaoli'}, {'id': 3, 'sex': 'female', 'name': 'xiaohua'}]
复制代码
实例3:格式化方式插入数据

列表形式
  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()  #格式化方式插入数据 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()
复制代码
运行结果

字典形式
  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()  #格式化方式插入数据 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:封装成类

  1. 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
复制代码
来源:https://www.cnblogs.com/xxpythonxx/p/17010418.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具