Esempio n. 1
0
 def get_sql_query(self,csv,q):
     sf=self.slot_fill(csv, q)
     sub_clause=''' WHERE {} = "{}" '''
     schema=self.data_process.get_schema_for_csv(csv)
     
     sf_columns=[i[0] for i in sf]
 
     ex_kwd=self.kword_extractor(q)
     unknown_slot,flag=self.unknown_slot_extractor(schema,sf_columns,ex_kwd)
     clause=Clause()
     question=""
 
     if flag: 
         for col in schema["columns"]:
             if "priority" in col.keys() and flag:
                 question=clause.adapt(q,inttype=True,priority=True)
                 
             else:   
                 question=clause.adapt(q,inttype=True)
 
     else:
         question=clause.adapt(q)
     if unknown_slot is None:
         unknown_slot='*'
     question=question.format(unknown_slot,schema["name"].lower())
     
     valmap = {}
     def get_key(val):
         return f"val_{len(valmap)}"
     print(sf)
     for i,s in enumerate(sf):
         col,val=s[0],s[2]
         typ = column_types.get(s[1])
         if i>0:
             sub_clause='''AND {} = "{}" '''
         if issubclass(typ, column_types.Number):
             val=self.cond_map(val)
             
         if issubclass(typ, column_types.String):
             k = get_key(val)
             valmap[k] = val
         else:
             k = val
         
 
         if any(i in conditions.keys() for i in k):
             
             subq=sub_clause.format(col, k)
             subq=subq.replace('=','')
             subq=subq.replace('"','')
         else:
             subq=sub_clause.format(col, k)
         
         
         question+=subq            
 
     
     return question, valmap