Advertisement
Guest User

Untitled

a guest
May 30th, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.68 KB | None | 0 0
  1. import sqlite3
  2. import xml.dom.minidom as mdom
  3. import xml.etree.ElementTree as ET
  4.  
  5. conn = sqlite3.connect('chinook.db')
  6. c = conn.cursor()
  7. c.execute("SELECT * FROM customers")
  8. root = ET.Element('Answer')
  9. for customer in c.fetchall():
  10.     customer_xml = ET.SubElement(root, 'customer')
  11.     name, surname = customer[1], customer[2]
  12.     customer_xml.set('name', name)
  13.     customer_xml.set('surname', surname)
  14.     c.execute("SELECT * FROM genres")
  15.     for genre in c.fetchall():
  16.         tracks = []
  17.         c.execute("SELECT InvoiceId FROM invoices WHERE CustomerId = ?", (customer[0],))
  18.         for invoice in c.fetchall():
  19.             c.execute("SELECT * from invoice_items WHERE InvoiceId = ?", (invoice[0],))
  20.             for invoice_item in c.fetchall():
  21.                 c.execute("SELECT * from tracks WHERE TrackId = ? AND GenreId = ?", (invoice_item[2], genre[0]))
  22.                 for track in c.fetchall():
  23.                     tracks.append((invoice, invoice_item, track))
  24.         if len(tracks) > 0:
  25.             genre_xml = ET.SubElement(customer_xml, 'genre')
  26.             genre_xml.set('name', genre[1])
  27.             for invoice, invoice_item, track in tracks:
  28.                 track_xml = ET.SubElement(genre_xml, 'track')
  29.                 track_xml.set('name', track[1])
  30.                 c.execute("SELECT Title from albums WHERE AlbumId = ?", (track[2],))
  31.                 album = c.fetchone()
  32.                 track_xml.set('album', album[0])
  33.                 track_xml.set('price', str(invoice_item[3]))
  34.  
  35. st = ET.tostring(root, encoding='unicode')
  36. print(st)
  37. xml = mdom.parseString(st)
  38. outxml = open('result.xml', 'w', encoding='utf8')
  39. outxml.write(xml.toprettyxml())
  40. outxml.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement