码迷,mamicode.com
首页 > 数据库 > 详细

python3.4.3 调用http接口 解析response xml后插入数据库

时间:2015-09-11 12:41:03      阅读:241      评论:0      收藏:0      [点我收藏+]

标签:

 工作中需要调用一个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后插入数据库

标签:

原文地址:http://www.cnblogs.com/phoebechiang/p/4800449.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!