工作中需要调用一个http的接口,等不及java组开发,就试着用python去调用。Python版本3.4.3

完整的流程包括:从sqlServer取待调用的合同列表 -> 循环调用http接口 -> 将response写入xml文件 -> 解析xml -> 插入oracle数据库

要去公司旅游了,先把代码放着,以后再详细解释记录一下。

#!/usr/bin/python3
import time
import pymssql
import urllib.parse
import httplib2
import os.path
import xml.etree.ElementTree
import cx_Oracle v_curr_datetime = time.strftime('%Y%m%d%H%M%S', time.localtime(time.time()))
print ('Step1: ' + v_curr_datetime) ##连接sqlServer,获得请求xml,写入txt文件#########################
#conn_req = pymssql.connect(host="***",user="***",password="***",database="***",charset = "utf8")
conn_req = pymssql.connect(host="***",user="",password="",database="ods",charset = "utf8")
cur_req = conn_req.cursor() v_file_name_req = 'requestList.txt'
f_req = open(v_file_name_req, 'w')
f_req = open(v_file_name_req, 'r+')
f_req.truncate() v_sql_req = "SELECT Loan_No,request_xml FROM if_haier_loan_contract_list"
cur_req.execute(v_sql_req)
rows = cur_req.fetchall()
for row_req in rows:
#row_req = row_req[0]+'||'+row_req[1]+'\n'
row_req = row_req[0] + '||' + 'kfs;serv10000100056;' + row_req[1] + '\n'
print(row_req)
f_req.write(row_req) f_req.close()
cur_req.close()
conn_req.close() print ('Step2: ' + time.strftime('%Y%m%d%H%M%S', time.localtime(time.time()))) ##循环得到的xml文件,逐个调用还款计划接口,解析后存到数据库##############
f_read = open('requestList.txt', 'r')
for v_row_read in f_read:
v_row_read = v_row_read.split('||')
print ('当前调用xml: ' + v_row_read[1])
http = httplib2.Http()
url = 'http://***' #body_str ='kfs;serv10000100056; <?xml version="1.0" encoding="gb2312" standalone="yes"?><msgbody><serviceId>serv10000100056</serviceId><GEN_GL_NO>1257393</GEN_GL_NO><LOAN_NO>HCF-CSCP20150708702904001</LOAN_NO><APP_USER_ID>01400515</APP_USER_ID><APP_USER_NAME>xxx</APP_USER_NAME><APP_USER_ORG_NO>0010</APP_USER_ORG_NO><ENQ_TYP>ALL</ENQ_TYP></msgbody>'
body_str = v_row_read[1]
headers = {'Content-type': 'application/x-www-form-urlencoded'}
print ('*'*30)
##请求接口数据#################
response, content = http.request(url, 'POST', headers=headers, body=body_str)
##将xml头的gb2312替换成utf-8###
print ('*'*20)
v_response = content.decode("utf-8").replace('encoding=\"gb2312\"','encoding=\"utf-8\"') ##将response生成xml文件#######
v_file_name = v_row_read[0] + '.xml'
f = open(v_file_name, 'w')
f.truncate()
f.write(v_response)
f.write('\n')
f.close() ##读取xml####################
root=xml.etree.ElementTree.parse(v_file_name)
##连接数据库##################
connMAPP = cx_Oracle.connect("user","password","tnsname")
cur1 = connMAPP.cursor() ##将数据写入数据库#############
#book=root.findall('MX')
book=root.iter('MX')
for book_list in book:
#print ('='*20)
v_row = []
for note in book_list:
v_temp = v_row.append(note.text)
#v_row = v_row.split(',')
#print (v_row) v_sql = " insert into temp_py values (%(v0)s,to_date(\'%(v1)s\','YYYY-MM-DD')) "%{'v0':v_row[0],'v1':v_row[1]}
#print (v_sql)
cur1.execute(v_sql) ##commit后关闭数据库连接
connMAPP.commit()
cur1.close()
connMAPP.close()
print ('Step3: ' + time.strftime('%Y%m%d%H%M%S', time.localtime(time.time())))

python3.4.3 调用http接口 解析response xml后插入数据库的更多相关文章

  1. 使用XStream解析复杂XML并插入数据库(二)

    标注黄色地方:我需要加深学习!!! 我写的是webservice,目前具体写webservice的步骤我还不清楚, 整理完小知识开始整理webservice! 针对以下格式的XML进行解析 <? ...

  2. 使用XStream解析复杂XML并插入数据库(一)

    环境: Springboot+mysql 我只想说jpa真的超级好用,准备深入研究一下~ 导入依赖: <dependency> <groupId>org.projectlomb ...

  3. 分30条依次解析xml并插入数据库成功

    package xxx; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import or ...

  4. 利用python3 调用zabbix接口完成批量加聚合图形(screens)

    在上一篇博客中,我们完成的利用python3 调用zabbix接口批量增加主机,增加主机的item,增加主机的图形! 接下来我们完成批量增加主机的screen 首先我们要增加screen需要哪些参数呢 ...

  5. 征信接口调用,解析(xml)

    数据传输格式报文格式:xml public CisReportRoot queryCisReport(PyQueryBean pyQueryBean) throws Exception { CisRe ...

  6. python使用grpc调用rpc接口

    proto文件: syntax = "proto3"; package coupon; // //message UnsetUseC2URequest { // int64 bid ...

  7. Java调用第三方接口工具类(json、form)

    1.JSON值访问 /** * 调用对方接口方法 * @param path 对方或第三方提供的路径 * @param data 向对方或第三方发送的数据,大多数情况下给对方发送JSON数据让对方解析 ...

  8. python调用RPC接口

    要调用RPC接口,python提供了一个框架grpc,这是google开源的 rpc相关文档: https://grpc.io/docs/tutorials/basic/python.html 需要安 ...

  9. Java调用第三方接口示范

    在项目开发中经常会遇到调用第三方接口的情况,比如说调用第三方的天气预报接口. 使用流程[1]准备工作:在项目的工具包下导入HttpClientUtil这个工具类,或者也可以使用Spring框架的res ...

随机推荐

  1. rocket mq 入门文档

    原文地址: http://jm.taobao.org/2017/01/12/rocketmq-quick-start-in-10-minutes/ 感谢原作者 十分钟入门RocketMQ 本文首先引出 ...

  2. SHELL用法三(变量及参数设置)

    京峰JF2115-Day45上课笔记 1.SHELL编程变量命名规范: 变量分为:系统变量.环境变量.用户变量: 定义变量时使用=赋值,无需通过declare定义变量的类型: 变量赋值时,=前后是不能 ...

  3. apache和tomcat的关系

    apache和tomcat的关系: 举个例子:apache是一辆卡车,上面可以装一些东西如html等.但是不能装水,要装水必须要有容器(桶),tomcat就是一个桶(装像JAVA这样的水),而这个桶也 ...

  4. struts2和springmvc比较1

    其实都是ssh只是一个是struts2+spring3.0+hibernate,而另外一个是 springmvc+spring3.0+hibernate,纵向来看比较struts2和springmvc ...

  5. java使用jackson生成和解析JSON

    java使用jackson生成和解析JSON 1.导包 2.生成json和解析json package test; import com.fasterxml.jackson.core.JsonProc ...

  6. shortcuts 快捷键

    Home » Linux » shortcuts 快捷键 Page Updated  2018-12-12 19:23 shortcuts 快捷键 移动光标 Ctrl – a :移到行首 Ctrl – ...

  7. MySQL树形结构的数据库表设计和查询

    1.邻接表(Adjacency List) 实例:现在有一个要存储一下公司的人员结构,大致层次结构如下: 那么怎么存储这个结构?并且要获取以下信息: 1.查询小天的直接上司. 2.查询老宋管理下的直属 ...

  8. 编写高质量 Objective-C 代码

    第一章 熟悉 Objective-C 第一条:了解 Objective-C 起源 Objective-C 是 C 语言动态性扩充.使用"消息结构"而非"函数调用" ...

  9. 这有一管信息量很大的DNA

    题图:华盛顿大学副教授Luis Henrique Ceze(照片中的男士)和研究科学家Lee Organick正将数字数据保存进DNA测序,以供"读取"并追溯原始文件. 来自微软和 ...

  10. linux安装部署ftp图片服务器

    1.安装http反向代理服务器.安装ftp文件传输组件vsftpd 详细安装及配置参见 https://blog.csdn.net/zhouym/article/details/100145964 2 ...