Diff for /ZSQLExtend/importFMPXML.py between versions 1.6 and 1.7

version 1.6, 2007/01/09 18:28:23 version 1.7, 2007/02/20 16:00:03
Line 4 Line 4
 import string  import string
 import logging  import logging
 import sys  import sys
   import types
   
 from xml import sax  from xml import sax
 from amara import saxtools  from amara import saxtools
Line 43  def SimpleSearch(curs,query, args=None): Line 44  def SimpleSearch(curs,query, args=None):
         query = query.encode("UTF-8")          query = query.encode("UTF-8")
         #if args is not None:          #if args is not None:
         #    args = [ sql_quote(a) for a in args ]          #    args = [ sql_quote(a) for a in args ]
       #logging.debug(query)
       #logging.debug(args)
   
     curs.execute(query, args)      curs.execute(query, args)
     logging.debug("sql done")      logging.debug("sql done")
     try:      try:
Line 92  class xml_handler: Line 96  class xml_handler:
         self.dbIDs = {}          self.dbIDs = {}
         self.rowcnt = 0          self.rowcnt = 0
                                   
           self.db.execute("set datestyle to 'german'")
         if id_field is not None:          if id_field is not None:
             # prepare a list of ids for sync mode              # prepare a list of ids for sync mode
             qstr="select %s from %s"%(id_field,table)              qstr="select %s from %s"%(id_field,table)
Line 138  class xml_handler: Line 143  class xml_handler:
         # adjust db table to fields in XML and fieldlist          # adjust db table to fields in XML and fieldlist
         for fieldName in self.fieldNames:          for fieldName in self.fieldNames:
             logging.debug("db-fieldname:"+repr(fieldName))                                   logging.debug("db-fieldname:"+repr(fieldName))                     
             if (fieldName not in columns) and (fieldName in self.update_fields):              fieldName=fieldName.replace(" ","_")   # repair _                  
               if (fieldName.lower() not in columns) and (fieldName in self.update_fields):
                 qstr="alter table %s add %s %s"%(self.table,fieldName,'text')                  qstr="alter table %s add %s %s"%(self.table,fieldName,'text')
                 logging.info("db add field:"+qstr)                  logging.info("db add field:"+qstr)
                   
                   if type(qstr)==types.UnicodeType:
                       qstr=qstr.encode('utf-8')
                 self.db.execute(qstr)                  self.db.execute(qstr)
                 self.dbCon.commit()                  self.dbCon.commit()
   
Line 160  class xml_handler: Line 169  class xml_handler:
         name = self.params.get((None, u'NAME'))          name = self.params.get((None, u'NAME'))
         yield None          yield None
         #Element closed.  Wrap up          #Element closed.  Wrap up
           name=name.replace(" ","_")# make sure no spaces
         self.fieldNames.append(name)          self.fieldNames.append(name)
         logging.debug("FIELD name: "+name)          logging.debug("FIELD name: "+name)
         return          return
Line 230  class xml_handler: Line 240  class xml_handler:
         id_val=''          id_val=''
         # synchronize by id_field          # synchronize by id_field
         if self.id_field:          if self.id_field:
             id_val=self.dataSet[self.id_field]              id_val=self.dataSet[self.id_field.lower()]
             if id_val in self.dbIDs:              if id_val in self.dbIDs:
                 self.dbIDs[id_val] += 1                  self.dbIDs[id_val] += 1
                 update=True                  update=True
Line 241  class xml_handler: Line 251  class xml_handler:
             #for fieldName in self.update_fields:              #for fieldName in self.update_fields:
             #    setvals.append("%s = %s"%(fieldName,sql_quote(self.dataSet[fieldName])))              #    setvals.append("%s = %s"%(fieldName,sql_quote(self.dataSet[fieldName])))
             #setStr=string.join(setvals, ',')              #setStr=string.join(setvals, ',')
             id_val=self.dataSet[self.id_field]              id_val=self.dataSet[self.id_field.lower()]
             #qstr="UPDATE %s SET %s WHERE %s = '%s' "%(self.table,setStr,self.id_field,id_val)              #qstr="UPDATE %s SET %s WHERE %s = '%s' "%(self.table,setStr,self.id_field,id_val)
             args = [self.dataSet[f] for f in self.update_fields]              args = [self.dataSet[f.lower()] for f in self.update_fields]
             args.append(id_val)              args.append(id_val)
             SimpleSearch(self.db, self.updQuery, args)              SimpleSearch(self.db, self.updQuery, args)
             logging.debug("update: %s"%id_val)              logging.debug("update: %s"%id_val)
Line 252  class xml_handler: Line 262  class xml_handler:
             #fields=string.join(update_fields, ',')              #fields=string.join(update_fields, ',')
             #values=string.join([" %s "%sql_quote(self.dataSet[x]) for x in self.update_fields], ',')              #values=string.join([" %s "%sql_quote(self.dataSet[x]) for x in self.update_fields], ',')
             #qstr="INSERT INTO %s (%s) VALUES (%s)"%(self.table,fields,self.values)              #qstr="INSERT INTO %s (%s) VALUES (%s)"%(self.table,fields,self.values)
             args = [self.dataSet[f] for f in self.update_fields]              args=[]
               for f in self.update_fields:
                   value=self.dataSet[f.lower()].encode('utf-8') 
                   if value=="": #hack DW
                       value=None
                       
                   args.append(value)
                   
               #args = [self.dataSet[f.lower()].encode('utf-8') for f in self.update_fields]
               logging.debug(args)
             SimpleSearch(self.db, self.addQuery, args)              SimpleSearch(self.db, self.addQuery, args)
             logging.debug("add: %s"%self.dataSet.get(self.id_field, self.rowcnt))              logging.debug("add: %s"%self.dataSet.get(self.id_field, self.rowcnt))
   
Line 293  class xml_handler: Line 312  class xml_handler:
             yield None              yield None
         #Element closed.  Wrap up          #Element closed.  Wrap up
         field = self.fieldNames[self.colIdx]          field = self.fieldNames[self.colIdx]
         self.dataSet[field] = content          self.dataSet[field.lower()] = content
         #print "  DATA(", field, ") ", repr(content)          #print "  DATA(", field, ") ", repr(content)
         return          return
   

Removed from v.1.6  
changed lines
  Added in v.1.7


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>