PydataSet vs list of tuples returned query result

I have this query in Python

cursor = cnx.cursor()

cursor.execute(""" SELECT batchdata.wafer , runsettings.settingname , runsettings.float8value FROM runsettings INNER JOIN batchdata ON batchdata.equipment = runsettings.equipment AND batchdata.wafer = runsettings.wafer WHERE runsettings.equipment = 'toolid' AND runsettings.runnumber = 1 ORDER BY batchdata.wafer; """) wafer_groups = itertools.groupby(cursor.fetchall(), key=itertools.itemgetter(0)) lstoflst = [dict(row[1:] for row in group[1]) for group in wafer_groups]

and the return is a list of dictionaries.

I have the same query on Ignition:

[code]qry = β€œβ€"
SELECT batchdata.wafer
, runsettings.settingname
, runsettings.float8value
FROM runsettings
INNER JOIN batchdata
ON batchdata.equipment = runsettings.equipment
AND batchdata.wafer = runsettings.wafer
WHERE
runsettings.equipment = β€˜DUV001’ AND
runsettings.runnumber = 1
ORDER BY batchdata.wafer;
β€œβ€"

qrydata = system.db.runPrepQuery(qry)

wafer_groups = itertools.groupby(qrydata, key=itemgetter(0))
lst = []
for group in wafer_groups:
dic = {}
for row in group[1]:
row = [i for i in row]
dic[row[1]] = row[2]
lst.append(dic)[/code]

Since in Ignition its returning a PyDataSet instead of list of tuples from the SELECT query, I cannot create a list of dictionary using the one liner β€œdict” function.

Is there anyway that i can convert the PyDataSet to a list of tuples?

def pds_to_tuples(pds):
	return map(lambda r: tuple([c for c in r]), pds)
2 Likes

Thanks Kevin,

Works like magic.