--- ZSQLExtend/importFMPXML.py 2006/12/20 18:45:58 1.1 +++ ZSQLExtend/importFMPXML.py 2006/12/21 12:17:32 1.4 @@ -3,10 +3,16 @@ import string from xml.dom.pulldom import parse -import psycopg2 as psycopg import logging import sys +try: + import psycopg2 as psycopg + psyco = 2 +except: + import psycopg + psyco = 1 + def getTextFromNode(nodename): """get the cdata content of a node""" @@ -30,9 +36,14 @@ def sql_quote(v): def SimpleSearch(curs,query, args=None): """execute sql query and return data""" logging.debug("executing: "+query) + if psyco == 1: + query = query.encode("UTF-8") curs.execute(query, args) logging.debug("sql done") - return curs.fetchall() + try: + return curs.fetchall() + except: + return None def importXMLFileFMP(dsn,table,filename,update_fields=None,id_field=None,sync_mode=False): @@ -146,14 +157,14 @@ def importXMLFileFMP(dsn,table,filename, setStr=string.join(setvals, ',') id_val=dataSet[id_field] qstr="UPDATE %s SET %s WHERE %s = '%s' "%(table,setStr,id_field,id_val) - db.execute(qstr) + SimpleSearch(db, qstr) ret += "up: %s"%id_val else: # create new row fields=string.join(update_fields, ',') values=string.join([" %s "%sql_quote(dataSet[x]) for x in update_fields], ',') qstr="INSERT INTO %s (%s) VALUES (%s)"%(table,fields,values) - db.execute(qstr) + SimpleSearch(db, qstr) ret += "ad: %s"%dataSet.get(id_field, rowcnt) #logging.info(" row:"+"%d (%s)"%(rowcnt,id_val)) @@ -169,7 +180,7 @@ def importXMLFileFMP(dsn,table,filename, if dbIDs[id] == 0: logging.info(" delete:"+id) qstr = "DELETE FROM %s WHERE %%s = '%%s'"%table - db.execute(qstr, (id_field,id)) + SimpleSearch(db, qstr, (id_field,id)) elif dbIDs[id] > 1: logging.info(" sync:"+"id used more than once?"+id)