ich möchte Daten von einem XML File in eine PostgreSQL Db schreiben.
Dazu nutze ich DOM und psycopg2.
Das Auslesen der Daten funktioniert soweit (können z.B. in der Console ausgeben werden).
Das schreiben in eine Datenbank habe ich zuerst getestet das funktioniert auch. Nun habe ich versucht die beiden Codeschnipsel zusammenzupacken.
Hierbei erhalte ich beim ausführen den Fehler : Error can't adapt type 'instance'.
Wie ich bereits gelesen habe liegt das wohl daran das der Typ der Variable fehlt.
Wie kann ich dies in meinem Code berücksichtigen?
Code: Alles auswählen
import psycopg2 # @UnresolvedImport
import sys
if __name__ == '__main__':
pass
from xml.dom.minidom import parse
con = None
try:
con=psycopg2.connect(database="********", host="******", user="*******", password="******")
cur = con.cursor()
dom = parse('C:\\Dokumente und Einstellungen\\d.dittrich\Desktop\\12300126637.xml') # parse an XML file by name
supply=dom.getElementsByTagName('Supply')
for node in supply:
conf_deliverynumber=node.getAttribute('Deliverynumber')
deliverynumber=node.getElementsByTagName('Deliverynumber')
for a in deliverynumber:
text=a.childNodes[0].nodeValue
print text
print
pallet=dom.getElementsByTagName('Pallet')
for node in pallet:
conf_palletnumber=node.getAttribute('Palletnumber')
palletnumber=node.getElementsByTagName('Palletnumber')
for a in palletnumber:
text=a.childNodes[0].nodeValue
print text
print
product=dom.getElementsByTagName('Product')
for node in product:
serialnumber=node.getElementsByTagName('Serialnumber')
articlenumber=node.getElementsByTagName('Articlenumber')
articledescription=node.getElementsByTagName('Articledescription')
cwmp=node.getElementsByTagName('CWMP')
maca=node.getElementsByTagName('maca')
macb=node.getElementsByTagName('macb')
macdsl=node.getElementsByTagName('macdsl')
macwlan=node.getElementsByTagName('macwlan')
usbBoardMac=node.getElementsByTagName('usb_board_mac')
usbRndisMac=node.getElementsByTagName('usb_rndis_mac')
for a in serialnumber:
text=a.childNodes[0].nodeValue
print text
for a in articlenumber:
text=a.childNodes[0].nodeValue
print text
for a in articledescription:
text=a.childNodes[0].nodeValue
print text
for a in cwmp:
text=a.childNodes[0].nodeValue
print text
for a in maca:
text=a.childNodes[0].nodeValue
print text
for a in macb:
text=a.childNodes[0].nodeValue
print text
for a in macdsl:
text=a.childNodes[0].nodeValue
print text
for a in macwlan:
text=a.childNodes[0].nodeValue
print text
for a in usbBoardMac:
text=a.childNodes[0].nodeValue
print text
for a in usbRndisMac:
text=a.childNodes[0].nodeValue
print text
print
cur.execute("INSERT INTO acs_lager(serialnumber,artikelbezeichnung,cwmp_mac,dsl_mac)VALUES(%s,%s,%s,%s)",(serialnumber,articlenumber,cwmp[7:19],macdsl))
con.commit()
except psycopg2.DatabaseError, e:
if con:
con.rollback()
print 'Error %s' % e
sys.exit(1)
finally:
if con:
con.close()