zoukankan      html  css  js  c++  java
  • 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)

  • 相关阅读:
    Python 购物车程序(文件版)
    Python 购物车程序
    Python多级菜单显示和登录小接口
    ARM体系结构与编程-第五章
    ARM体系结构与编程-第四章
    ARM的IRQ模式和FIQ模式
    C结构体的初始化和赋值
    ARM体系结构与编程-第三章
    函数调用过程分析
    关于STM32-M3/M4的MSP和PSP
  • 原文地址:https://www.cnblogs.com/zhongyehai/p/9619970.html
Copyright © 2011-2022 走看看