##
## XMLPush
##
## A small utility to move XML as exported from SQL Server or MS Access to a
## mySQL table.
##
## Not too fancy, but gets the job done. As with all recipes, season to taste
## depending on your needs.
##
## Albert L. Perrien II
## 08 March 2011
## aperrien@razodisk.com
##
import re
from lxml import etree
import MySQLdb
def XMLPush(datafile,server,dbuser,password,dbname,table)
def quote(text):
return "'" + text + "'"
def doublequote(text):
return '"' + text + '"'
connection = MySQLdb.connectionect (host = server,
user = dbuser,
passwd = password,
db = dbname)
cursor = connection.cursor()
tree = etree.parse(datafile)
root = tree.getroot()
# Parse out data from XML
data = []
for child in root:
datarow = {}
for leaf in child:
datarow[leaf.tag] = leaf.text
data.append(datarow)
# Push data to DB
statements = []
for row in data:
columns = []
values = []
for item in row:
# Reformatting data to mySQL formats
columns.append(item.replace(" ",""))
temp = row[item]
values.append(quote(temp.replace("'","")))
# Push data to table
statement = "INSERT INTO " + table + " (" + ",".join(columns) + ") VALUES (" + \
",".join(values) + ")"
statements.append(statement)
for statement in statements:
cursor.execute(statement)
connection.commit()
connection.close()
XMLPush("MainTable.xml","mySQL-Server","mySQL-User","mySQL-Password","DB_Name","Table")