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

python接口自动化测试二十八:连接SQL sever操作


1、中文乱码问题:
  (1)、文件头加上# -*- coding:utf-8 -*- 或者 #coding=utf8
  (2)、pymssql.connect连接串中charset是要跟你数据库的编码一样,如果是数据库是gb2312 ,则写charset='gb2312'。
  (3)、读取数据时需要decode('utf-8'),写入数据时需要encode('utf-8'),这样就可以避免中文乱码或报错问题。

2、需要安装pymssql包(连接mysql安装pymysql)
  pip install pymssql

3、代码:

# coding:utf-8

import pymssql

class MSSQL:
def __init__(self,host,user,pwd,db):
self.host = host
self.user = user
self.pwd = pwd
self.db = db

def __GetConnect(self):
if not self.db:
raise(NameError, "没有设置数据库信息")
self.conn = pymssql.connect(host=self.host,user=self.user,password=self.pwd,database=self.db,charset="utf8")
cur = self.conn.cursor()
if not cur:
raise(NameError, "连接数据库失败")
else:
return cur

def Selsql(self,sql):
cur = self.__GetConnect()
cur.execute(sql)
resList = cur.fetchall()

#查询完毕后必须关闭连接
self.conn.close()
return resList

def Exesql(self,sql):
cur = self.__GetConnect()
try:
# 执行sql语句
cur.execute(sql)
# 提交到数据库
self.conn.commit()
except:
# 发生错误时回滚
conn.rollback()
# 关闭数据库连接
self.conn.close()

if __name__=='__main__':

ms = MSSQL(host="192.168.1.1",user="sa",pwd="sa",db="testdb")
reslist = ms.Selsql("select * from webuser")
for i in reslist:
print(i)

newsql="update webuser set name='%s' where id=1"%u'测试'
print(newsql)
ms.Exesql(newsql.encode('utf-8'))


4、数据库操作常用函数:

commit() 提交
rollback() 回滚

cursor用来执行命令的方法:
callproc(self, procname, args):用来执行存储过程,接收的参数为存储过程名和参数列表,返回值为受影响的行数
execute(self, query, args):执行单条sql语句,接收的参数为sql语句本身和使用的参数列表,返回值为受影响的行数
executemany(self, query, args):执行单挑sql语句,但是重复执行参数列表里的参数,返回值为受影响的行数
nextset(self):移动到下一个结果集

cursor用来接收返回值的方法:
fetchall(self):接收全部的返回结果行.
fetchmany(self, size=None):接收size条返回结果行.如果size的值大于返回的结果行的数量,则会返回cursor.arraysize条数据.
fetchone(self):返回一条结果行.
scroll(self, value, mode='relative'):移动指针到某一行.如果mode='relative',则表示从当前所在行移动value条,如果 mode='absolute',则表示从结果集的第一行移动value条.

更新操作语句中列表的运用:
  value=[1,'aaa']
  cur.execute('insert into test values(%s,%s)',value)

  values=[]
  for i in range(20):
  values.append((i,'aaa'+str(i)))
  cur.executemany('insert into test values(%s,%s)',values)

转载于:https://www.cnblogs.com/zhongyehai/p/9619970.html

相关文章:

  • python中如何去掉字符串中的空格
  • jupyter、flask、tornado、djiango安装
  • BZOJ2768 JLOI2012冠军调查(最小割)
  • Js判断参数(String,Array,Object)是否为undefined或者值为空
  • 图片合成
  • 对象 get和set方法
  • spsss基本统计分析操作攻略
  • liunx环境下mongodb3.2升级至3.6
  • Keil MDK下如何设置非零初始化变量(复位后变量值不丢失)
  • web服务器下出现大量TIME_WAIT
  • 正则 常见2
  • js限制文本框只能输入数字方法小结
  • VC++文件操作之最全篇
  • SDN控制器列表
  • jdbc学习
  • [iOS]Core Data浅析一 -- 启用Core Data
  • [LeetCode] Wiggle Sort
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • 【刷算法】从上往下打印二叉树
  • 【刷算法】求1+2+3+...+n
  • 2019年如何成为全栈工程师?
  • ES6 ...操作符
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • exports和module.exports
  • Linux gpio口使用方法
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • 安卓应用性能调试和优化经验分享
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 爬虫模拟登陆 SegmentFault
  • 设计模式走一遍---观察者模式
  • 数据仓库的几种建模方法
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • 用jQuery怎么做到前后端分离
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • MPAndroidChart 教程:Y轴 YAxis
  • UI设计初学者应该如何入门?
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • $.ajax,axios,fetch三种ajax请求的区别
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (AngularJS)Angular 控制器之间通信初探
  • (zhuan) 一些RL的文献(及笔记)
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (黑马C++)L06 重载与继承
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (五)Python 垃圾回收机制
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • (转)shell中括号的特殊用法 linux if多条件判断
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .NET Core 通过 Ef Core 操作 Mysql
  • .net core控制台应用程序初识
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法