Explorar o código

Adding optional keyColumn to importXLSX.loadSafely

Andrej hai 3 semanas
pai
achega
48b3b24aa9
Modificáronse 1 ficheiros con 12 adicións e 7 borrados
  1. 12 7
      importXLSX.py

+ 12 - 7
importXLSX.py

@@ -391,9 +391,10 @@ def importData(pars,filename,getId=getId,modify=modify,\
 #    print('{}: {}'.format(p,len(pMap[p])))
    print(entries)
 #delete previous incarnations
-   loadSafely(pars,entries,dryRun)
+   loadSafely(pars,entries,dryRun=dryRun)
 
-def loadSafely(pars,entries,dryRun=True):
+def loadSafely(pars,entries,keyColumn=None,dryRun=True):
+#allow additional keys in keyColumn
 
    db=getDB(pars)
    project=pars.get('project','DCIS/Study')
@@ -402,13 +403,17 @@ def loadSafely(pars,entries,dryRun=True):
    
    updateRows=[]
    insertRows=[]
+
+
+   selVal=['ParticipantId','SequenceNum']
+   if keyColumn:
+      selVal.append(keyColumn)
+
    for entry in entries:
-      v='ParticipantId'
-      idFilter={'variable':v,'value':entry[v],'oper':'eq'}
 
-      v='SequenceNum'
-      seqFilter={'variable':v,'value':'{}'.format(entry[v]),'oper':'eq'}
-      ds=db.selectRows(project,schema,query,[idFilter,seqFilter])
+      qFilter=[{'variable':v,'value':'{}'.format(entry[v]),'oper':'eq'} for v in selVal]
+      ds=db.selectRows(project,schema,query,qFilter)
+
       if len(ds['rows'])>0:
          r=ds['rows'][0]
          r.update(entry)