博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python3.4.3 调用http接口 解析response xml后插入数据库
阅读量:6456 次
发布时间:2019-06-23

本文共 3150 字,大约阅读时间需要 10 分钟。

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

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

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

 

 

#!/usr/bin/python3import timeimport pymssqlimport urllib.parseimport httplib2import os.pathimport xml.etree.ElementTreeimport cx_Oraclev_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; 
serv10000100056
1257393
HCF-CSCP20150708702904001
01400515
xxx
0010
ALL
' 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())))

 

转载于:https://www.cnblogs.com/phoebechiang/p/4800449.html

你可能感兴趣的文章
查找数据库备注信息
查看>>
自定义input的file样式
查看>>
POJ-3565 Ants---KM算法+slack优化
查看>>
使用selenium找出外卖点餐次数最多的10个顾客
查看>>
html学习笔记css
查看>>
vuejs目录介绍
查看>>
IT人的学习方法论-5,也谈IT的创新
查看>>
开店攻略: 现代促销的七种促销策略
查看>>
springboot kafka @@KafkaListener 批处理消息
查看>>
python错误处理/调试/单元测试/文档测试
查看>>
HDU2546题解
查看>>
PHP-mac下的配置及运行
查看>>
输出运算符号时的不同
查看>>
文档流
查看>>
hackerrank---Find a string
查看>>
XMPP即时通讯(代码实现)
查看>>
css文本 颜色3
查看>>
网站计数器代码(jsp版本)
查看>>
闭包模拟静态变量与私有变量
查看>>
第三个Sprint冲刺第六天(燃尽图)
查看>>