工作中需要调用一个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. hadoop集群搭建(docker)

    背景 目前在一家快递公司工作,因项目需要,对大数据平台做个深入的了解.工欲利其器必先利其器,在网上找了许多教程,然后自己搭建一个本地的环境并记录下来,增加一些印象. 环境搭建 1)Ubuntu doc ...

  2. Python实现:生产者消费者模型(Producer Consumer Model)

    #!/usr/bin/env python #encoding:utf8 from Queue import Queue import random,threading,time #生产者类 clas ...

  3. axios 传对象(JavaBean)到后台

    //user对象 let user = JSON.stringify({ userAccountNumber: own.userName, userPassword: own.userPassword ...

  4. Waymo

    技术优势 Waymo在自己的激光雷达系统上投入了大量资金,它认为这项技术对自动驾驶汽车的长期成功至关重要.实际上,该公司声称它已经将专有激光雷达传感器的成本降低了90%,这种传感器以前的制造成本为7. ...

  5. (为容器分配独立IP方法二)通过虚拟IP实现docker宿主机增加对外IP接口

    虚拟IP.何为虚拟IP,就是一个未分配给真实主机的IP,也就是说对外提供数据库服务器的主机除了有一个真实IP外还有一个虚IP,使用这两个IP中的任意一个都可以连接到这台主机,所有项目中数据库链接一项配 ...

  6. WiredTiger运行时参数优化

    MongoDB的WiredTiger存储引擎,用了一段时间,遇到了一些问题,通过优化WT参数,也解决了一些问题,做个小结. cache_size 指定WT存储引擎内部cache的内存用量上限. 需要注 ...

  7. android使用giflib加载gif

    转载请标明出处:https:////www.cnblogs.com/tangZH/p/12356915.html 背景不多说,反正ndk加载gif比java上加载gif好很多很多,主要体现在内存占用与 ...

  8. scrapy爬虫-代理IP中间件

    class ProxyDownloaderMiddleware(object): # Not all methods need to be defined. If a method is not de ...

  9. 华为的Java面试题,仅供参考。

    IP地址的编码分为哪俩部分? IP地址由两部分组成,网络号和主机号.不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位. 2.用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该 ...

  10. 后端工程师必知必会的前端 css 知识

    后端工程师虽然大部分工作都是跟服务器缓存数据库打交道,但有时也需要写一些前端代码. 有些公司的OAM后台基本是由后端工程师承包的,所以前端基础知识是必须要掌握的:就算开发中不直接写前段代码,了解前端知 ...