Page MenuHomec4science

selector.py
No OneTemporary

File Metadata

Created
Tue, May 14, 23:39

selector.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# -*- py-which-shell: "python"; -*-
################################################################
import copy
import constraints as BDcons
################################################################
class Selector(object):
def __init__(self, base):
self.base = base
def buildList(self, curs, sqlobjs):
print (sqlobjs)
if not isinstance(sqlobjs, list):
sqlobjs = [sqlobjs]
col_infos = []
sqlobjs2 = []
for sqlobj in sqlobjs:
if isinstance(sqlobj, type):
sqlobj = sqlobj(self.base)
sqlobjs2.append(sqlobj)
col_infos.append(self.base.getColumnProperties(sqlobj))
sqlobjs = sqlobjs2
list_objects = []
for entries in curs:
print(entries)
objs = []
offset = 0
print (sqlobjs)
for index, sqlobj in enumerate(sqlobjs):
obj = copy.deepcopy(sqlobj)
print (type(obj))
print (obj)
col_info = col_infos[index]
ncol_info = len(col_info)
for i in range(0, ncol_info):
col_name = col_info[i][0]
obj[col_name] = entries[offset]
# print(col_name, entries[offset])
offset += 1
objs.append(obj)
if len(objs) == 1:
list_objects.append(objs[0])
else:
list_objects.append(tuple(objs))
return list_objects
def select(self, _types, constraints=None, sort_by=None):
const = BDcons.BDconstraints(self.base, constraints)
condition, params = const.getMatchingCondition()
if not isinstance(_types, list):
_types = [_types]
selected_tables = ['{0}.{1}'.format(self.base.schema, t.table_name)
for t in _types]
selected_tables = ','.join(selected_tables)
request = "SELECT * FROM {0}".format(selected_tables)
if condition:
request += " WHERE " + condition
# print (sort_by)
if sort_by:
request += " ORDER BY " + sort_by
print(request)
print(params)
curs = self.base.performRequest(request, params)
obj_list = self.buildList(curs, _types)
return obj_list

Event Timeline