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 |
|
|