前言

  最近一段时间除了忙于工作之外,在业余时,迷上了python,对它的跨平台深深的吸引。经过一段时间的自我学习,了解了其基本的语法,便开始自己着手摆弄起来。主要想把以前对接的接口再实现一次,以便于在做中发现问题,解决问题。只看不做,没有实际的操练,永远都是纸上谈兵。在此过程中遇到了许多问题,通过不断查询资料和请教基本完善了功能。现将自我觉得比较重要的部分拿出来和大家一起探讨一下,也顺便自己对此做个记录!

模拟Http请求

  在请求别人接口时,我们最常使用的是模拟Http请求。在python中有许多方式,我选用了新版的httplib2。有兴趣的可以查看一下其他文档。  

# encoding: utf-8
__author__ = 'changyang'
'''
@author: changyang
@software: PyCharm
@file: httphelper.py
@time: 2015/12/14 10:48
@function:http请求操作'''
import httplib2,json#get
def get(url):return handler(url,None,'GET')#post
def post(url,data):return handler(url,data,'POST')#统一处理http函数
def handler(url,data,method):try:httpClient=httplib2.Http()headers = {"Content-type": "application/x-www-form-urlencoded","Accept": "text/plain"}if data!=None:data=json.dumps(data)response,content=httpClient.request(uri=url,method=method,body=data,headers=headers)return content.decode('utf-8')except Exception as e:print(e)if __name__=='__main__':print('choice http method...')

Mysql数据库访问类

  由于使用.net习惯了,还真不知道怎样描述,大家理解意思就行。是在不知道怎样说了,直接上代码。

# encoding: utf-8
__author__ = 'changyang'
'''
@author: changyang
@software: PyCharm
@file: mysql_helper.py
@time: 2015/12/24 16:15
@function:数据库访问帮助类
'''
import mysql.connectorclass MySqlHelper(object):def __init__(self,config_mysql):self.create_connector(config_mysql)#创建数据库连接def create_connector(self,config_mysql):try:self.connector= mysql.connector.connect(host=config_mysql['host'],user=config_mysql['user'],password=config_mysql['password'],database=config_mysql['database'],port=config_mysql['port'],charset='utf8',buffered=True)self.cursor=self.connector.cursor(buffered=True)except Exception as e:print('myql connector is error:%s' % e)#插入单条信息,parameters为元组,sql语句中的占位符必须与参数的顺序相同,且sql语句中以‘%s’进行占位def insert(self,sql,parameters):try:if sql==None or sql=='':return 0self.cursor.execute(sql,parameters)self.connector.commit()return self.cursor.rowcountexcept Exception as e:print('insert is error:%s' % e)finally:self.cursor.close()self.connector.close()#一次性插入多条数据,parameters为数组,每个元素都是一个元组,元组内容的顺序必须与sql语句中的占位符相同,且sql语句中以‘%s’进行占位def multiinsert(self,sql,parameters):try:if sql==None or sql=='':return 0self.cursor.executemany(sql,parameters)self.connector.commit()return self.cursor.rowcountexcept Exception as e:print('multiinsert is error:%s' % e)finally:self.cursor.close()self.connector.close()#分页查询,parameters为元组,sql语句中的占位符必须与参数的顺序相同,且sql语句中以‘%s’进行占位#可用于分页查询,但是需要在sql语句中进行分页def findlimit(self,sql,parameters,size):try:if sql==None or sql=='':return 0self.cursor.execute(sql,parameters)allcount=self.cursor.rowcountlist=Noneif size!=0:list= self.cursor.fetchmany(size)else:list= self.cursor.fetchall()return list,allcountexcept Exception as e:print('findlimit is error:%s' % e)finally:self.connector.commit()self.cursor.close()self.connector.close()#查询全部,parameters为元组,sql语句中的占位符必须与参数的顺序相同,且sql语句中以‘%s’进行占位def findall(self,sql,parameters):return self.findlimit(sql,parameters,0)

  这里我使用了配置文件,便于后期管理,其实说白了,也就是一个数组。直接上配置  

configs_mysql={'host':'ip地址','user':'账号','password':'密码','database':'数据库','port':端口号}

其他比较重要的访问类

  xml和json相互转化:

# encoding: utf-8
__author__ = 'changyang'
'''
@author: changyang
@software: PyCharm
@file: json_to_xml.py
@time: 2015/12/15 9:57
@function:json转化为xml
'''
import xmltodict,json#xml转化为json
def xml_to_json(str):if str=='':raise 'str is null'str=xmltodict.parse(str)return json.dumps(str)#json转化为xml
def json_to_xml(str):if str=='':raise 'str is null'str={'Ticket':json.loads(str)}return xmltodict.unparse(str,encoding='utf-8',full_document=True)if __name__=='__main__':xml = """
<student><stid>10213</stid><info><name>name</name><mail>xxx@xxx.com</mail><sex>male</sex></info><course><name>math</name><age>90</age></course><course><name>english</name><age>88</age></course>
</student>
"""result=xml_to_json(xml)print(result)print(json_to_xml(result))

  文件操作

# encoding: utf-8
__author__ = 'changyang'
'''
@author: changyang
@software: PyCharm
@file: file_helper.py
@time: 2015/12/15 8:49
@function:文件操作
'''
import sys,time,os,shutil#保存xml文件并写入内容
def save(path_type,filename,content):try:path=get_common_path(path_type)if not os.path.exists(path):os.makedirs(path)filename='%s\%s' % (path,filename)if os.path.exists(filename):os.remove(filename)with open(filename, "w",encoding='utf-8') as f:f.write(content)except Exception as e:print(e)
#移除文件类型下的所有文件
def remove(path_type):try:path=get_common_path(path_type)if os.path.exists(path):shutil.rmtree(path,True)except Exception as e:print(e)#获取当前门票xml路径
def getpath(xml,path_type):return  get_common_path(path_type,xml)

2015的最后总结

  2015有许多未完成的,还有一些已经完成的。在自己生日这天,订了车,算是走出了第一步。此后一直坚持给母亲每个月打钱回去,开始存钱准备买房的艰辛道路。在这年中,还有许多该看的书未完成,还有许多值得提升的地方还在进行中。一直对数据比较感兴趣,所以最近一直在自学python。也许自己有一些底子,但只能说是触类旁通吧。还有待自己去多加实践。我是一个不善言辞的人,也不知道该说些什么,只是按照自己的目前,一步一步走下去的,相信不会让自己失望的。

   2016,加油!

转载于:https://www.cnblogs.com/zcy-xy/p/5082092.html

Python数据库访问公共组件及模拟Http请求相关推荐

  1. Python数据库访问之SQLite3、Mysql

    现有的数据库管理系统有很多种,本文选择介绍两种DBMS:SQLite 3 和 Mysql. SQLite 3 SQLite 3是Python 3预装的.相当完备.无需配置的基于SQL的数据库管理系统. ...

  2. Python爬虫学习之API与模拟ajax请求

    API的使用 --通过API向服务器请求数据 优点:简单直接,高效率地批量爬取:解决动态网页的爬取. 缺点:通过API的缺点是有些网站会限制API调用的次数和频率,用户需要付费来升级成高级用户来获取更 ...

  3. SQLAPI数据库访问接口访问MySQL数据库

    SQLAPI是一种比较方便的数据库访问接口组件,可以支持多种数据库接口的访问,详细信息可以访问www.sqlapi.com,有详细介绍.本文介绍的是在MFC中通过SQLAPI接口访问MySQL数据库的 ...

  4. PHP-Curl模拟HTTP请求

    2019独角兽企业重金招聘Python工程师标准>>> 使用PHP-Curl方式模拟HTTP请求,测试接口传参和返回值状态 <?php/*** 模拟post进行url请求* @ ...

  5. SpringBoot2 整合OAuth2组件,模拟第三方授权访问

    本文源码:GitHub·点这里 || GitEE·点这里 一.模式描述 授权服务 验证第三方服务的身份,验证邮箱用户的身份,记录和管理认证Token,为资源服务器提供Token校验.场景:第三方网站借 ...

  6. 【商业版】C# ASP.NET 通用权限管理系统组件源码中的数据库访问组件可以全面支持Access单机数据库了...

    可能在5年前还用过Access单机数据库但是后来很少用了,可能平时接触的都是大型管理类系统的开发工作大部分是Oracle.SQLServer数据库上做开发的,很少做一些小网站或者单机版本的东西,所以跟 ...

  7. oracle存储sql片段引入_强大的跨数据库访问组件 UniDAC使用教程:注释和SQL函数...

    Universal Data Access Components (UniDAC)是一款通用数据库访问组件,提供了多个数据库的直接访问,如针对Windows的Delphi,C++Builder, La ...

  8. 公共数据库访问连接类

    公共数据库访问连接类 顾名思义,公共数据库访问连接类有三个特点: 1.公共的,所以在该类中的所有方法都是静态的,因此直接调用类名即可,无须再实例化. 2.数据库访问,要访问数据库 3.连接类,所以有一 ...

  9. delphi 用MDAC微软数据库访问组件的dll动态库

    delphi 用MDAC微软数据库访问组件的dll动态库 一.概念 MDAC(Microsoft Data Access Components)是微软数据库访问组件,Netpise和许多利用数据库的软 ...

最新文章

  1. Swift 3.0 预告:将 Objc 库转换成更符合 Swift 语法风格的形式
  2. 浅谈ASP.NET的内部机制(一)
  3. 鸿蒙os内测版应用名称,鸿蒙OS2.0发布,只有两款机型可以申请内测
  4. CEO 赠书 | 打破创新神话,揭示创新本质
  5. 推荐算法炼丹笔记:序列化推荐算法SASRec
  6. 使用poi统计工作职责
  7. 使用Angular与TypeScript构建Electron应用(五)
  8. unity3d连接数据库
  9. php 连接 mysql 8.0
  10. Dvr的工作原理及入门分析
  11. sklearn 5.18.3 SGD - Maximum margin separating hyperplane
  12. 路飞学城Python-Day78
  13. GAN入门实例【个人理解】
  14. 那些普通人的价值观终究会害了你
  15. 移动距离 X星球居民小区的楼房全是一样的,并且按矩阵样式排列。其楼房的编号为1,2,3... 当排满一行时,从下一行相邻的楼往反方向排号。 比如:当小区排号宽度为6时,开始情形如下:
  16. 两套系统同个服务器,同一服务器运行两套workerman程序有什么需要特别修改的吗...
  17. Ajax传JSON对象报错:JSON parse error: Unrecognized token ‘ids‘: was expecting (‘true‘, ‘false‘ or ‘null‘);
  18. 元宇宙大火的“天时、地利、人和”
  19. บาคาร่า ธุรกิจที่สร้างรายได้ดี
  20. layui使用表格数据,json嵌套数据解决

热门文章

  1. Django创建项目
  2. 百度转换经纬度为地址
  3. 获取上传文件的后缀名
  4. 温故知新-[CPP]-Eclipse-CPP中一个Project多个Main
  5. Learning Perl 4
  6. [ASP.NET 控件实作 Day14] 继承 CompositeControl 实作 Toolbar 控件
  7. 教你自己制作Vista与DOS双系统
  8. android synchronized的使用
  9. android textView设置粗体
  10. Android 应用程序发布流程注意事项(整理)