python3.4.3 调用http接口 解析response xml后插入数据库
工作中需要调用一个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后插入数据库的更多相关文章
- 使用XStream解析复杂XML并插入数据库(二)
标注黄色地方:我需要加深学习!!! 我写的是webservice,目前具体写webservice的步骤我还不清楚, 整理完小知识开始整理webservice! 针对以下格式的XML进行解析 <? ...
- 使用XStream解析复杂XML并插入数据库(一)
环境: Springboot+mysql 我只想说jpa真的超级好用,准备深入研究一下~ 导入依赖: <dependency> <groupId>org.projectlomb ...
- 分30条依次解析xml并插入数据库成功
package xxx; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import or ...
- 利用python3 调用zabbix接口完成批量加聚合图形(screens)
在上一篇博客中,我们完成的利用python3 调用zabbix接口批量增加主机,增加主机的item,增加主机的图形! 接下来我们完成批量增加主机的screen 首先我们要增加screen需要哪些参数呢 ...
- 征信接口调用,解析(xml)
数据传输格式报文格式:xml public CisReportRoot queryCisReport(PyQueryBean pyQueryBean) throws Exception { CisRe ...
- python使用grpc调用rpc接口
proto文件: syntax = "proto3"; package coupon; // //message UnsetUseC2URequest { // int64 bid ...
- Java调用第三方接口工具类(json、form)
1.JSON值访问 /** * 调用对方接口方法 * @param path 对方或第三方提供的路径 * @param data 向对方或第三方发送的数据,大多数情况下给对方发送JSON数据让对方解析 ...
- python调用RPC接口
要调用RPC接口,python提供了一个框架grpc,这是google开源的 rpc相关文档: https://grpc.io/docs/tutorials/basic/python.html 需要安 ...
- Java调用第三方接口示范
在项目开发中经常会遇到调用第三方接口的情况,比如说调用第三方的天气预报接口. 使用流程[1]准备工作:在项目的工具包下导入HttpClientUtil这个工具类,或者也可以使用Spring框架的res ...
随机推荐
- Mybatis与Spring整合(纯注解)
java1.5版本之后开始支持注解,spring*2开始提供注解配置方式,到spring**4后spring推荐使用注解配置 IOC注解(主要作用就是在spring容器中声明一个Bean,同xml中的 ...
- hadoop集群搭建(docker)
背景 目前在一家快递公司工作,因项目需要,对大数据平台做个深入的了解.工欲利其器必先利其器,在网上找了许多教程,然后自己搭建一个本地的环境并记录下来,增加一些印象. 环境搭建 1)Ubuntu doc ...
- openssl内存分配,查看内存泄露
openssl内存分配 用户在使用内存时,容易犯的错误就是内存泄露.当用户调用内存分配和释放函数时,查找内存泄露比较麻烦.openssl提供了内置的内存分配/释放函数.如果用户完全调用openssl的 ...
- <luogu1347>排序
本来打算当打了个拓扑的板子 后来发现并不只是个板子 差不多 管他呢 #include<cstdio> #include<cstring> #include<iostrea ...
- ionic2踩坑之兼容android4.3及以下版本
一个命令就行了 ionic plugin add cordova-plugin-crosswalk-webview --save 执行完之后重新打包. 但是如果要兼容4.0及以下的话.... 帮不了你 ...
- Stock Starer股票盯盘
一个业余小项目,用于监控指定股票的成交指标,触发事件的主动通知 源码 !https://github.com/jeffchen81/stock-starer 设计说明 场景 定时任务1:通过网上Ope ...
- Visual Studio 2013编译Tesseract 3.04
文章目录 去年时候使用了VS2008编译了Tesseract 3.02版本,主要是参考了一份官方文档,但是对于目前的最新版本并没有给出说明. 本文主要参考了Paul Vorbach的How to bu ...
- iptables学习02-nat表应用
nat表应用实验 第一步 准备工作 A机器两块网卡ens33(192.168.2.106).再添加一块自定义网卡ens37(192.168.100.1),添加到LAN内网区段(自定义名字,写什么无所谓 ...
- 记 MySQL优化 20条
1. 为查询缓存优化你的查询 大多数的MySQL服务器都开启了查询缓存.这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的.当有很多相同的查询被执行了多次的时候,这些查询结果会被放到一 ...
- 一篇文章带您读懂List集合(源码分析)
今天要分享的Java集合是List,主要是针对它的常见实现类ArrayList进行讲解 内容目录 什么是List核心方法源码剖析1.文档注释2.构造方法3.add()3.remove()如何提升Arr ...