当前位置:Gxlcms >
数据库问题 >
python3.4.3 调用http接口 解析response xml后插入数据库
python3.4.3 调用http接口 解析response xml后插入数据库
时间:2021-07-01 10:21:17
帮助过:8人阅读
!/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后插入数据库
标签: