既然我们都已经会在cmd中操作数据库,那么为什么还要用python连接mysql呢?这里就涉及到接口自动化,因为我们做接口自动化避免不了需要连接数据库做一些数据库的查询,这些操作都是需要我们来连接数据库的

操作前提:

  • 电脑上已装好mysql服务,并配置好相应环境
  • 已有python环境,并装好相应的编译器(如pycharm)
  • 打开cmd ,输入: pip install pymysql ,安装pymysql库

这些已经准备好后,查看是否存在数据库

打开cmd,连接mysql,查看自己有没有数据库:
show databases;
没有就创建一个名为start的数据库:
create database start;

打开pycharm编译器,开始封装数据库

先创建一个DB类,并写好初始化方法

class DB():
# cursorclass将返回结果呈字典显示 ,如果传了就应用,不传就为Nonedef __init__(self,host,user,password,database,cursorclass = None):self.host = host  #  ip地址,本机就传localhost就可以self.user = user  #  账户名,如果你没有更改过,那就是rootself.password = password  # 数据库密码self.databases = database  # 你具体要连接的哪一个数据库self.cursorclass = cursorclass  # 返回结果呈字典形式  {}

在DB类下创建连接数据库的方法

    def connect(self):  # 创建连接数据库方法import pymysql# 创建数据库连接self.db = pymysql.connect(host = self.host,user = self.user,password =self.password,database = self.databases,cursorclass = self.cursorclass)#创建游标self.cursor = self.db.cursor()

这里游标的创建是为了执行sql语句,如果sql语句执行失败,同样也是需要游标回滚,否则后续的执行都会超出我们的预期范围

封装关闭数据库及游标方法

    def close(self):  #关闭方法self.cursor.close()  # 关闭游标self.db.close()  # 关闭数据库

封装查询方法

    def get_one(self,sql):  # 返回一条符合条件的查询结果result = 0try:self.connect()self.cursor.execute(sql)result = self.cursor.fetchone()self.close()except Exception as e:print('select error',e)return resultdef get_all(self,sql):  # 返回全部符合条件的查询结果result = 0try:self.connect()self.cursor.execute(sql)result = self.cursor.fetchall()self.close()except Exception as e:print("select error",e)return result

创建主函数,插入语句、删除语句、更新语句都是通过它来执行

 def __edit(self,sql):  # 创建主函数result = 1  #设置结果集,用于调用的时候做判断try:  #这里是使用的try语句来尝试进行操作self.connect()self.cursor.execute(sql)self.db.commit()  # 注意的是,如果是对数据库做了修改、删除、增加的操作,那么一定要commit提交,查询和创建表不需要提交self.close()except Exception as e:  # 如果操作失败,报出操作异常,且游标进行回滚print('error :',e)result = 0self.db.rollback()return result

封装修改方法、删除方法、插入数据方法

 def insert(self,sql):# 插入语句  ,以下三个都是一样的,只是调用的时候,我们看起来更加清晰而已return self.__edit(sql)  # 通过主函数的处理,来去执行sql语句def delete(self,sql):  #  删除语句return self.__edit(sql)def update(self,sql):  # 修改语句return self.__edit(sql)

实际上都是一样的,这里命名不一样是为了我们在后续执行或者回看代码的时候,更快速的知道它是属于哪一种sql语句

结合起来,展示下完整的封装数据库代码,喜欢的小伙伴可以直接copy哦~~~

class DB():def __init__(self,host,user,password,database,cursorclass = None):# cursorclass将返回结果呈字典显示 ,如果传了就应用,不传就为Noneself.host = host  #  ip地址,本机就传localhost就可以self.user = user  #  账户名,如果你没有更改过,那就是rootself.password = password  # 数据库密码self.databases = database  # 你具体要连接的哪一个数据库self.cursorclass = cursorclass  # 返回结果呈字典形式  {}def connect(self):  # 创建连接数据库方法import pymysql# 创建数据库连接self.db = pymysql.connect(host = self.host,user = self.user,password =self.password,database = self.databases,cursorclass = self.cursorclass)#创建游标self.cursor = self.db.cursor()def get_one(self,sql):  # 返回一条符合条件的查询结果result = 0try:self.connect()self.cursor.execute(sql)result = self.cursor.fetchone()self.close()except Exception as e:print('select error',e)return resultdef get_all(self,sql):  # 返回全部符合条件的查询结果result = 0try:self.connect()self.cursor.execute(sql)result = self.cursor.fetchall()self.close()except Exception as e:print("select error",e)return resultdef __edit(self,sql):  # 创建主函数result = 1  #设置结果集,用于调用的时候做判断try:  #这里是使用的try语句来尝试进行操作self.connect()self.cursor.execute(sql)self.db.commit()  # 注意的是,如果是对数据库做了修改、删除、增加的操作,那么一定要commit提交,查询和创建表不需要提交self.close()except Exception as e:  # 如果操作失败,报出操作异常,且游标进行回滚print('error :',e)result = 0self.db.rollback()return resultdef insert(self,sql):# 插入语句  ,以下三个都是一样的,只是调用的时候,我们看起来更加清晰而已return self.__edit(sql)  # 通过主函数的处理,来去执行sql语句def delete(self,sql):  #  删除语句return self.__edit(sql)def update(self,sql):  # 修改语句return self.__edit(sql)def close(self):  #关闭方法self.cursor.close()  # 关闭游标self.db.close()  # 关闭数据库

接下来演示下怎么调用,这个就比较简单了

from 数据库_dom1 import DB
import pymysql#实例化数据库对象sor
sor = DB(host = 'localhost',user = 'root',password = '12345678',database='start',cursorclass=pymysql.cursors.DictCursor)# 测试创建表sql = 'create table student(id int auto_increment primary key,name varchar(50))'
res = sor.update(sql)
if res == 1:
# 如果结果集返回1,实际上我们在封装的时候它就是1,那么执行下面的操作sql = 'show tables;'re = sor.get_all(sql)print(re)
# 如果返回为0,那么打印下失败了
else:print('数据库操作失败')# 插入语句sql = 'insert into student(name) values("白嘉诚")'
res = sor.insert(sql)
if res ==1:sql = 'select * from student're = sor.get_all(sql)print(re)
else:print("插入失败")# 修改语句
sql = 'update student set name="马旭萌"  where name="白嘉诚"'
res = sor.update(sql)
if res ==1:sql = 'select * from student're = sor.get_all(sql)print(re)
else:print('修改失败')#删除语句
sql = 'delete from student where name ="马旭萌"'
res = sor.delete(sql)
if res ==1:sql = 'select * from student're = sor.get_all(sql)print(re)
else:print('删除失败')

上面的删、改、插入方法调用起来都是一样的,这种的是比较容易理解的

这种封装数据库的方法适用于较灵活sql语句使用,比如多表联查等,没有对sql语句进行详细的封装,但是用起来肯定要比正常引用敏捷一些

初探----python封装通俗易懂的数据库增、删、改、查方法相关推荐

  1. Linux技术--mysql数据库增-删-改-查

    # mysql 数据库 ## 数据库的操作 ### 五个单位 * 数据库服务器   Linux或者 windows  * 数据库  * 数据表 * 数据字段 * 数据行 ### 连接数据库 ``` 1 ...

  2. datatable更新到mysql_.NET_使用DataTable更新数据库(增,删,改),1、修改数据复制代码 代码如 - phpStudy...

    使用DataTable更新数据库(增,删,改) 1.修改数据 DataRow dr = hRDataSet.Tables["emp"].Rows.Find(textBox3.Tex ...

  3. python学生姓名添加删除_python-函数-实现学生管理系统,完成对学员的增,删,改,查和退出学生管理系统。...

    实现学生管理系统,完成对学员的增,删,改,查和退出学生管理系统. 要求1:使用一个list用于保存学生的姓名. 要求2:输入0显示所有学员信息,1代表增加,2代表删除,3代表修改,4代表查询,exit ...

  4. 表单的增 删 改 查

    django单表操作 增 删 改 查 一.实现:增.删.改.查 1.获取所有数据显示在页面上 model.Classes.object.all(),拿到数据后,渲染给前端;前端通过for循环的方式,取 ...

  5. properties(map)增.删.改.查.遍历

    import java.util.Map; import java.util.Properties; import java.util.Set;/*** properties(map)增.删.改.查. ...

  6. Python 操作 Elasticsearch 实现 增 删 改 查

    Github 地址:https://github.com/elastic/elasticsearch-py/blob/master/docs/index.rst 官网地址:https://elasti ...

  7. PySpark︱DataFrame操作指南:增/删/改/查/合并/统计与数据处理

    笔者最近需要使用pyspark进行数据整理,于是乎给自己整理一份使用指南.pyspark.dataframe跟pandas的差别还是挺大的. 文章目录 1.-------- 查 -------- -- ...

  8. 简单的php数据库操作类代码(增,删,改,查)

    数据库操纵基本流程为: 1.连接数据库服务器 2.选择数据库 3.执行SQL语句 4.处理结果集 5.打印操作信息 其中用到的相关函数有 •resource mysql_connect ( [stri ...

  9. pyRedis - 操作指南:增/删/改/查、管道与发布订阅功能

    文章目录 1 redis docker 部署与安装 2 py - redis的使用 2.1 redis的连接 2.2 常规属性查看 2.2.2 关于删除 2.3 STRING 字符串的操作 2.4 H ...

最新文章

  1. Xamarin Android教程Android基本知识版本介绍与系统介绍
  2. ntdll.dll学习总结
  3. android Java BASE64编码和解码二:图片的编码和解码
  4. iOS之深入解析内存管理的引用计数retainCount的底层原理
  5. java ajax解析json数据_利用AJAX向后台servlet传JSON数据,后台利用fastjson进行解析
  6. 云计算监控—Prometheus监控系统(文末赠书)
  7. 开发自己的PHP MVC框架(一)
  8. iOS 自定义layer的两种方式
  9. Bose 700无线消噪耳机评测:让用户不受打扰是它最大的温柔
  10. kafka : CommitFailedException already rebalanced and assigned max.poll.records
  11. 苹果手机解压缩软件_照片压缩软件哪款好用?推荐5款好用的图片压缩软件
  12. qq发送消息时变成表情
  13. 计算机与三菱plc485通讯,三菱plc同三菱变频器RS-485通讯功能的编程实例
  14. C++:建立一个被称为sroot()的函数,返回其参数的二次方根。重载sroot()3次,让它返回整数、长整数与双精度的二次方根
  15. php中file_get_contents与curl性能比较分析
  16. 915M无线通讯模块 数传 SI4463 SX1278
  17. 在c语言中本征函数说明,西北工业大学 量子力学历年考题某年的吧
  18. 2020年jQuery笔试题汇总整理
  19. 杠杆炒股选择几倍比较适合?
  20. nyoj82 迷宫寻宝(一) (bfs)

热门文章

  1. 【CS231n】斯坦福大学李飞飞视觉识别课程笔记(五):图像分类笔记(下)
  2. Unity接口的使用
  3. dwc3并不是一种数据传输协议,你错了
  4. N皇后问题 - 构造法原理与证明: 时间复杂度O(1)
  5. HTTPS、HTTPS、SSH、MSTSC等常用网络服务的端口号
  6. 等额本息还款和等额本金还款计算公式的推导
  7. elasticsearch7.x catAPI之shards
  8. 策略模式、工厂模式、装饰者模式总结解析
  9. HTTPS 到底加密了什么?
  10. C语言编程>第十四周 ⑦ 请编写一个函数fun,它的功能是:计算n门课程的平均分,计算结果作为函数值返回。