一、pymysql介绍及安装

01 pymysql介绍

MySQL应该说是如今使用最为普遍的数据库了,没有之一,而Python作为最为流行的语言之一,自然少不了与MySQL打交道,其中PyMySQL就是使用最多的工具库。

  • PyMySQL是一个纯Python写的MySQL客户端,可以在CPython、PyPy、IronPython和Jython环境下运行;
  • PyMySQL的性能和MySQLdb几乎相当,如果对性能要求 不是特别的强,使用PyMySQL将更加方便;
  • PyMySQL的使用方法和MySQLdb几乎一样;

02 pymysql安装

方式一:使用命令安装

pip install pymysql

方式二:PyCharm内部安装

导入模块:

import pymysql

二、pymysql流程及模块说明

01 pymysql操作流程

  1. 导入pymysql;
  2. 建立数据库连接:使用pymysql的connect()方法连接数据,返回连接对象;
  3. 使用连接对象创建游标对象(用于操作sql);
  4. 准备写sql语句(select * from student);
  5. 使用游标对象执行sql;
  6. 查询数据使用游标获取;
  7. 关闭游标(先)和数据库连接(后)。

02 pymysql模块说明

▌Connection对象

表示:conn=connect(参数列表)

作用:用于建立与数据库的连接;

创建对象:调用connect()方法;

参数列表:

  • host:连接的mysql主机,如本机是'localhost';
  • port:连接的mysql主机的端口,默认是3306;
  • database:数据库的名称;
  • user:连接的用户名;
  • password:连接的密码;
  • charset:通信采用的编码方式,推荐使用utf8;

▌对象的方法

对象方法如下:

  • close():关闭连接;
  • commit():提交;
  • cursor():返回Cursor对象,用于执行sql语句并获得结果;
  • execute(operation [, parameters ]):执行语句,返回受影响的行数,主要用于执行insert、update、delete语句,也可以执行create、alter、drop等语句;
  • fetchone():执行查询语句时,获取查询结果集的第一个行数据,返回一个元组;
  • fetchall():执行查询时,获取结果集的所有行,一行构成一个元组,再将这些元组装入一个元组返回;
  • 关于pymysql防注入,字符串拼接查询,容易造成注入,为了避免注入,使用pymysql提供的参数化语句;

▌Cursor对象

游标(cursor)就是游动的标识,通俗的说,一条sql取出对应n条结果资源的接口/句柄,就是游标,沿着游标可以一次取出一行。

  • 用于执行sql语句,使用频度最高的语句为select、insert、update、delete;
  • 获取Cursor对象:调用Connection对象的cursor()方法:cs1=conn.cursor()

▌对象的属性

  • rowcount只读属性,表示最近一次execute()执行后受影响的行数;
  • connection获得当前连接对象;

三、pymysql语法基础

01 代码示例

import pymysql
# 连接数据库
conn = pymysql.connect(host='127.0.0.1', user='ITester', password='123456',
database='ITester', charset='utf8')
# 创建游标
cursor = conn.cursor()
# 执行sql语句
sql = 'select * from user limit 3;'
res = cursor.execute(sql)
# 获取查询结果的1条数据
data = cursor.fetchone()
print(data)
# 关闭游标连接
cursor.close()
# 关闭数据库连接
conn.close()

02 语法总结

1.连接数据库,需要host、user、password、database、charset等信息;

2.操作数据库先创建游标;

3.执行指定的sql语句,如果涉及到增、删、改数据库必须要conn.commit(),提交事务

4.查询获取数据条数有三种方法fetchone、fetchmany、fetchall。

  • cursor.fetchone() :默认获取查询结果的第一条数据;
  • cursor.fetchmany(2) :获取查询结果的指定条数,比如获取2条数据;
  • cursor.fetchall() :获取查询结果的所有数据;

5.需要注意的是,fetch获取的数据默认是元组,如果想要字典类型,

cursor=pymysql.cursors.DictCursor;

6.先关闭游标,后关闭数据库连接;

四、封装数据库类

01 封装说明

在实际项目中,很多地方都有用到数据库的操作,所以需要将数据库相关操作进行封装,方便其他模块调用。

如下,在common目录下,新建文件db_handler.py 用于封装数据库操作。

db_handler.py

import pymysql
class DBHandler:
def __init__(self,host,port,user,password,
database,charset,**kwargs):
# 连接数据库服务器
self.conn = pymysql.connect(host=host, port=port, user=user,password=password,
database=database,cursorclass=pymysql.cursors.DictCursor,
charset=charset,**kwargs)
# 获取游标
self.cursor = self.conn.cursor() def query(self, sql, args=None,one=True):
self.cursor.execute(sql, args)
# 提交事务
self.conn.commit()
if one:
return self.cursor.fetchone()
else:
return self.cursor.fetchall()
def close(self):
self.cursor.close()
self.conn.close()
# 如果为被引用执行:
if __name__ == "__main__":
db = DBHandler(host='127.0.0.1', port=3306,
user='ITester', password='123456',
database='ITester', charset='utf8')
sql = 'select * from user limit 1;'
data = db.query(sql)
print(data)

02 引用db_handler.py

from .db_handler import DBHandler

@app.route('/getProductList2',methods=['get'])
def getProductList2():
db=DBHandler(host="127.0.0.1",port=3306,user='root',password='root',
database='system',charset="utf8")
sql = 'SELECT * FROM product;'
data = db.query(sql)
print(data)
return {"data":data}

Python接口自动化之pymysql数据库操作的更多相关文章

  1. 【python接口自动化】- PyMySQL数据连接

    ​ 什么是 PyMySQL? ​ PyMySQL是在Python3.x版本中用于连接MySQL服务器的一个库,Python2中则使用mysqldb.它是一个遵循 Python数据库APIv2.0规范, ...

  2. ❤️Python接口自动化,一文告诉你连接各大【数据库】建议收藏❤️

    @ 目录 前言 常见数据库 Mysql Oracle sql-server PostgreSQL MongoDB Redis 前言 相信很多小伙伴在使用python进行自动化测试的时候,都会涉及到数据 ...

  3. python学习笔记(15)pymysql数据库操作

    pymysql数据库操作 1.什么是PyMySQL 为了使python连接上数据库,你需要一个驱动,这个驱动是用于与数据库交互的库. PyMySQL : 这是一个使Python连接到MySQL的库,它 ...

  4. 【python接口自动化】- 对接各大数据库

    相信很多小伙伴在使用python进行自动化测试的时候,都会涉及到数据库数据校验的问题,在前面的随笔中就已经有讲过连接mysql的使用,今天给大家汇总一下python对接几大常用的数据库操作的方法!众所 ...

  5. Python接口自动化——soap协议传参的类型是ns0类型的要创建工厂方法纪要

    1:在Python接口自动化中,对于soap协议的xml的请求我们可以使用Suds Client来实现,其soap协议传参的类型基本上是有2种: 第一种是传参,不需要再创建啥, 第二种就是ns0类型的 ...

  6. python接口自动化-Cookie_绕过验证码登录

    前言 有些登录的接口会有验证码,例如:短信验证码,图形验证码等,这种登录的验证码参数可以从后台获取(或者最直接的可查数据库) 获取不到也没关系,可以通过添加Cookie的方式绕过验证码 前面在“pyt ...

  7. python接口自动化 -参数关联(一)

    原文地址https://www.cnblogs.com/yoyoketang/p/6886610.html 原文地址https://www.cnblogs.com/yoyoketang/ 原文地址ht ...

  8. python接口自动化4-绕过验证码登录(cookie)

    前言 有些登录的接口会有验证码:短信验证码,图形验证码等,这种登录的话验证码参数可以从后台获取的(或者查数据库最直接). 获取不到也没关系,可以通过添加cookie的方式绕过验证码. 一.抓登录coo ...

  9. python接口自动化3-自动发帖(session)

    前言 上一篇模拟登录博客园,但这只是第一步,一般登录后,还会有其它的操作,如发帖,评论等,这时候如何保持会话呢? (敲黑板!!!由于博客园最近登录机制变了,登录全部走cookie登录) 一.sessi ...

  10. python接口自动化16-multipart/form-data上传图片

    前言 在提交表单操作的时候,经常会遇到图片上传的操作,图片上传是一个单独的接口,本篇以禅道为例,介绍如何上传图片 上传接口 1.以禅道上提交bug为例,在选择图片时,点确定按钮,就是上传图片了 2.用 ...

随机推荐

  1. 【书籍知识回顾与总结-2022】Java语言重点知识-多线程编程、流式编程

    一.多线程编程 二.流式编程 1.目的 简化集合和数组的操作 注意:每个流只能使用一次 2.获取流的方式 (1)单列集合:stream方法 KeySet()/values()/EntrySet() ( ...

  2. 【离线数仓】Day01-用户行为数据采集:数仓概念、需求及架构、数据生成及采集、linux命令及其他组件常见知识

    一.数据仓库概念 二.项目需求及架构设计 1.需求分析 2.项目框架 3.框架版本选型 服务器选型:云主机 服务器规划 三.数据生成模块 1.数据基本格式 公共字段:所有手机都包含 业务字段:埋点上报 ...

  3. 关于如何在C#中调用C++的DLL,以及如何在C++中调用C#的DLL

    一.关于如何在C#中调用C++的DLL,以及如何在C++中调用C#的DLL 注:clr指公共语言运行库 CLR是一门非常恶搞的语言,就好像是在C++里面写C#的文件一样,也就是一种所谓的"托 ...

  4. loadrunner11安装时提示缺少Microsoft Visual c++2005 sp1组件的解决办法

    解决方法: 1.进入loadrunner-11安装程序\loadrunner-11\Additional Components\IDE Add-Ins\MS Visual Studio .NET文件夹 ...

  5. c++中编码protobuf repeated string

    参考:http://www.cppblog.com/API/archive/2014/12/09/209070.aspx proto文件 addressbook.proto syntax = &quo ...

  6. DevSecOps 需要知道的十大 K8s 安全风险及建议

    Kubernetes (K8s)是现代云原生世界中的容器管理平台.它实现了灵活.可扩展地开发.部署和管理微服务.K8s 能够与各种云提供商.容器运行时接口.身份验证提供商和可扩展集成点一起工作.然而 ...

  7. 【转载】七个人生工具,终生受益 | SWOT、PDCA、6W2H、SMART、WBS、时间管理、二八原则

    人类历史原本就是一部追求自身平衡的奋斗史,本文介绍七个人生工具:SWOT.PDCA.6W2H.SMART.WBS.时间管理.二八原则 . 1.SWOT分析法 Strengths:优势 Weakness ...

  8. 【转载】EXCEL VBA 自动筛选—AutoFilter方法

    AutoFilter方法的语法及说明   下面是Range对象的AutoFilter方法的语法:      Range对象.AutoFilter(Field,Criterial1,Operator,C ...

  9. APICloud平台使用融云模块实现音视频通话实践经验总结分享

    需求概要:实现视频拨打.接听.挂断.视频界面大小窗口.点击小窗口实现大小窗口互换. 实现思路:一方拨打后,另一方要能收到相应事件,然后接听.接通后,渲染对方视频画面.那么己方视频画面什么时候渲染呢?对 ...

  10. TKE 注册节点,IDC 轻量云原生上云的最佳路径

    林顺利,腾讯云原生产品经理,负责分布式云产品迭代和注册节点客户扩展,专注于云原生混合云新形态的推广实践. 背景 企业在持续业务运维过程中,感受到腾讯云 TKE 带来的便捷性和极致的使用体验,将新业务的 ...