Page MenuHomec4science

selector.py
No OneTemporary

File Metadata

Created
Thu, Jun 27, 11:40

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):
if not isinstance(sqlobjs, list):
sqlobjs = [sqlobjs]
col_infos = []
for sqlobj in sqlobjs:
if isinstance(sqlobj, type):
sqlobj = sqlobj(self.base)
col_infos.append(self.base.getColumnProperties(sqlobj))
list_objects = []
for entries in curs:
objs = []
for index, sqlobj in enumerate(sqlobjs):
obj = copy.deepcopy(sqlobj)
col_info = col_infos[index]
for i in range(0, col_info):
col_name = col_info[i][0]
obj[col_name] = entries[i]
objs.append(objs)
list_objects.append(objs)
# print len(list_objects)
return list_objects
def select(self, _types, constraints=None, sort_by=None):
const = BDcons.BDconstraints(self.base, constraints)
condition, params = const.getMatchingCondition()
################################################################
#review
#if not isinstance(sort_by, list) and sort_by is not None):
# sort_by = [sort_by]
#
# order_condition = ""
# if (sort_by is not None):
# order_condition = " ORDER BY ("
# for cond in sort_by:
# order_condition += cond + ","
# order_condition = order_condition[:len(order_condition)-1] + ")"
################################################################
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
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