Сделал программку которая парсит XML файлы и записывает данные в базу Oracle.
Проблема в том что запись в базу происходит очень медленно. Как я понял это из-за коммита который идет после каждого инсерта, подскажите как лучше делать коммит и запись в базу, и есть ли удобнее метод парсинга чем тот который использую?
main.py
import xml.etree.ElementTree as ET
import condb
tree = ET.parse(filexml)
element_xml_root = tree.getroot()
for elem in element_xml_root.findall('ZAP'):
idpac = elem.find('ID_PAC').text
fam = elem.find('FAM').text
im = elem.find('IM') .text
ot = elem.find('OT') .text
Insert_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
insert_usl(idpac, code_usl, date_usl, price_usl)
condb.py
import cx_Oracle
def con()
db = cx_Oracle.connect("SYSTEM", "1234567890", "localhost/ORCL")
dbcur = db.cursor()
def insert_pac(idpac, fam, im, ot):
db = con()
query = dbcur.prepare('INSERT INTO pac_table (idpac, fam, im, ot) VALUES (:idpac, : fam, : im, : ot)')
dbcur.execute(query, (idpac, fam, im, ot))
db.commit()
dbcur.close()
def insert_usl(idpac, code_usl, date_usl, price_usl):
db = con()
query = dbcur.prepare('INSERT INTO usl_table (idpac, code_usl, date_usl, price_usl) VALUES (:idpac, : code_usl, : date_usl, : price_usl)')
dbcur.execute(query, (idpac, code_usl, date_usl, price_usl))
db.commit()
dbcur.close()