当前位置: 首页 > news >正文

(接口自动化)Python3操作MySQL数据库

基础语法:

import pymysql #导入模块
conn = pymysql.connect(host='localhost',user='root', passwd='123456', db='test', port=3306, charset='utf8',cursorclass = pymysql.cursors.DictCursor) #连接数据库,cursorclass = pymysql.cursors.DictCursor表示把查询的返回值变为字典格式
cur = conn.cursor() #建立指针
cur.execute("insert into users (username,password,email) values (%s,%s,%s)",("老齐","9988","qiwsir@gmail.com")) #插入单条数据
cur.executemany("INSERT DELAYED INTO  users (username,pwd,mail) VALUES (%s,%s,%s)",('lili', 'ffff', 'gggg@qq.com'),('lili', 'sds', '321@qq.com')) #插入多条数据
conn.commit() #提交保存

  

以下是在接口测试中的实际应用

# -*- coding:utf-8 -*-
import pymysql,logging,os
class OperationDb_interface(object):
	def __init__(self):
		self.conn=pymysql.connect(host='localhost',
			user='root', passwd='123456', db='test', port=3306, charset='utf8',cursorclass = pymysql.cursors.DictCursor) #创建数据库连接
		self.cur=self.conn.cursor() #创建游标
	#定义单条数据操作,增删改
	def op_sql(self,param):
		try:
			self.cur.execute(param) #游标下执行sql语句
			self.conn.commit() #提交数据
			return True
		except pymysql.Error as e:
			print('Mysql Error %d:%s' % (e.args[0], e.args[1]))
			logging.basicConfig(filename = os.path.join(os.getcwd(), './log.txt'),
				level = logging.DEBUG, format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s')
			logger = logging.getLogger(__name__)
			logger.exception(e)
			return False



	#查询表中单条数据
	def selectOne(self,condition):
		try:
			self.cur.execute(condition) #执行sql语句
			results = self.cur.fetchone() #获取一条结果
		except pymysql.Error as e:
			results ='spl0001'
			print('Mysql Error %d:%s' %(e.args[0], e.args[1]))
			logging.basicConfig(filename = os.path.join(os.getcwd(), './log.txt'),
				level = logging.DEBUG, format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s')
			logger = logging.getLogger(__name__)
			logger.exception(e)
		finally:
			return results

	#查询表中多条数据
	def selectAll(self,condition):
		try:
			self.cur.execute(condition)
			self.cur.scroll(0, mode='absolute') #游标里的光标回到初始位置
			results = self.cur.fetchall() #返回游标中所有结果
		except pymysql.Error as e:
			results='spl0001'
			print('Mysql Error %d:%s' %(e.args[0], e.args[1]))
			logging.basicConfig(filename = os.path.join(os.getcwd(), './log.txt'),
				level = logging.DEBUG, format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s')
			logger = logging.getLogger(__name__)
			logger.exception(e)
		finally:
			return results

	#定义表中插入多条数据操作
	def insertMore(self, condition,argsall):
		try:
			self.cur.executemany(condition,argsall)
			self.conn.commit()
			return True
		except pymysql as e:
			results ='spl0001' #数据库执行错误
			print('Mysql Error %d:%s' % (e.args[0], e.args[1]))
			logging.basicConfig(filename = os.path.join(os.getcwd(), './log.txt'),
				level = logging.DEBUG, format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s')
			logger = logging.getLogger(__name__)
			logger.exception(e)
			return False
	#数据库关闭
	def __del__(self):
		if self.cur != None:
			self.cur.close()
		if self.conn != None:
			self.conn.close()

if __name__ == '__main__':
	test=OperationDb_interface() #实例化类
	sql1="insert into users (username,pwd,mail) VALUES (%s,%s,%s)"
	argsall=[('lilyu','1234','1234@qq.com'),('lilu','124','124@qq.com'),('lil','14','14@qq.com')]
	result=test.insertMore(sql1,argsall)
	print(result)

  

转载于:https://www.cnblogs.com/lansan0701/p/7454745.html

相关文章:

  • 自动在多个DB上执行同一条sql语句 ( 存储过程版 )
  • 判断是否是子串
  • 程序员编程艺术第十一章:最长公共子序列(LCS)问题
  • Python之时间表示
  • iOS中UIWebview中网页宽度自适应的问题
  • 重启开源,分享无限--微软面试187题精选
  • 推荐给非互联网主体的用户
  • string.format的使用与及转义
  • Java Socket网络编程
  • 浅谈返回值类型: json与html
  • SVN的安装与简单使用
  • SQL Server直接查询: 其它的连接/Excel
  • javaweb part6---jstl以及el表达式
  • webuploader配置
  • SQL Server中的convert来转换时间
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • css系列之关于字体的事
  • gf框架之分页模块(五) - 自定义分页
  • Netty源码解析1-Buffer
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • Xmanager 远程桌面 CentOS 7
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 浏览器缓存机制分析
  • 如何在 Tornado 中实现 Middleware
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 正则表达式小结
  • AI算硅基生命吗,为什么?
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • 函数计算新功能-----支持C#函数
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • 移动端高清、多屏适配方案
  • ​2020 年大前端技术趋势解读
  • ​比特币大跌的 2 个原因
  • ​一些不规范的GTID使用场景
  • #考研#计算机文化知识1(局域网及网络互联)
  • (BFS)hdoj2377-Bus Pass
  • (C语言)字符分类函数
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (笔试题)分解质因式
  • (待修改)PyG安装步骤
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (转)人的集合论——移山之道
  • .chm格式文件如何阅读
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .net CHARTING图表控件下载地址
  • .NET Framework .NET Core与 .NET 的区别
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • /usr/bin/perl:bad interpreter:No such file or directory 的解决办法
  • :“Failed to access IIS metabase”解决方法