Как быстрее произвести сам парсинг и затем сделать insert в бд?
На данный момент использую такой алгоритм, но при больших файлах(и когда файлов много) читает xml и делает insert долго.
Есть ли другой алгоритм быстрее распарсить xml и сделать insert не по каждой записи а группой?
Например сразу записать все что есть в ZAP в client_table , потом DATA вusl_table
import xml.etree.cElementTree as ET
tree = ET.parse(filexml)
element_xml_root = tree.getroot()
dbcur = db.cursor()
for elem in element_xml_root.findall('ZAP'):
idclient = elem.find('ID_CLIENT').text
fam = elem.find('FAM').text
im = elem.find('IM') .text
ot = elem.find('OT') .text
query_pac = dbcur.prepare('INSERT INTO client_table (idclient, fam, im, ot)'
' VALUES (:idclient, : fam, : im, : ot)')
dbcur.execute(query_pac, (idpac, fam, im, ot))
for data in elem.findall('DATA'):
code_usl = data.find('CODE') .text
date_usl = data.find('DATE') .text
price_usl = data.find('PRICE') .text
query_usl = dbcur.prepare('INSERT INTO usl_table (idpac, code_usl, date_usl, price_usl)'
' VALUES (:idpac, : code_usl, : date_usl, : price_usl)')
dbcur.execute(query_usl, (idpac, code_usl, date_usl, price_usl))
db.commit()
dbcur.close()