--- ZSQLExtend/importFMPXML.py 2011/05/20 16:03:18 1.32 +++ ZSQLExtend/importFMPXML.py 2011/06/23 09:14:53 1.33 @@ -6,6 +6,7 @@ import logging import sys import types import time +import re from xml import sax from amara import saxtools @@ -22,7 +23,7 @@ except: fm_ns = 'http://www.filemaker.com/fmpxmlresult' -version_string = "V0.6.6 ROC 20.5.2011" +version_string = "V0.6.7 ROC 21.6.2011" def unicodify(text, withNone=False): """decode str (utf-8 or latin-1 representation) into unicode object""" @@ -68,6 +69,20 @@ def sql_quote(v): v=string.join(string.split(v,dkey),quote_dict[dkey]) return "'%s'"%v +def sqlName(s, lc=True, more=''): + """returns restricted ASCII-only version of string""" + if s is None: + return "" + + # remove ' + s = s.replace("'","") + # all else -> "_" + s = re.sub('[^A-Za-z0-9_'+more+']','_',s) + if lc: + return s.lower() + + return s + def SimpleSearch(curs,query, args=None, ascii=False): """execute sql query and return data""" #logger.debug("executing: "+query) @@ -351,7 +366,7 @@ class xml_handler: #Element closed. Wrap up if self.lc_names: # clean name - sqlname = name.replace(" ","_").lower() + sqlname = sqlName(name) else: sqlname = name self.xml_field_names.append(name)