I have SQL table with Column values as (used only 1 record)
-l oracle -t employee.address -z 85248
When I extract data using CX_Oracle, I am getting below data that I am storing in a variable as sql_output as below (its tuple within list)
sql_output = [('-l oracle -t employee.address -z 85248',),
('-l oracle -t employee.address -z 85249',),
('-l oracle -t employee.address -z 85220',),
('-l oracle -t employee.address -z 85215',),
('-l oracle -t employee.address -z 85240',),
('-l oracle -t employee.address -z 85258',)]
In above example -l, -t, -z are the parameters that I want to use as key I am looking for dictionary within list as so that I can loop over and run another command
desire_output = [{'l': 'oracle', 's': 'employee', 't': 'address', 'z': 85248},
{'l': 'oracle', 's': 'employee', 't': 'address', 'z': 85249},
{'l': 'oracle', 's': 'employee', 't': 'address', 'z': 85220},
{'l': 'oracle', 's': 'employee', 't': 'address', 'z': 85215},
{'l': 'oracle', 's': 'employee', 't': 'address', 'z': 85240},
{'l': 'oracle', 's': 'employee', 't': 'address', 'z': 85258}]
I have tried to convert this into string than a dictionary within list using as below
sql_output = [('-l oracle -t employee.address -z 85248',),
('-l oracle -t employee.address -z 85249',),
('-l oracle -t employee.address -z 85220',),
('-l oracle -t employee.address -z 85215',),
('-l oracle -t employee.address -z 85240',),
('-l oracle -t employee.address -z 85258',)]
dic, lst = {}, []
for item in sql_output:
itm = ' '.join(item).replace('-','').split(' ')
dic[itm[0]]=itm[1]
dic['s']=itm[3].split('.')[0]
dic['t']=itm[3].split('.')[1]
dic[itm[4]]=itm[5]
print(dic)
lst.append(dic)
print(lst)
result
[{'l': 'oracle', 's': 'employee', 't': 'address', 'z': '85258'},
{'l': 'oracle', 's': 'employee', 't': 'address', 'z': '85258'},
{'l': 'oracle', 's': 'employee', 't': 'address', 'z': '85258'},
{'l': 'oracle', 's': 'employee', 't': 'address', 'z': '85258'},
{'l': 'oracle', 's': 'employee', 't': 'address', 'z': '85258'},
{'l': 'oracle', 's': 'employee', 't': 'address', 'z': '85258'}]
Not sure how to achieve this, my way seems to be super complicated, any solution?