Ejemplo n.º 1
0
def test_get_shema(s, v):
    column = Column(s)
    column.add_value(v)
    schema = column.get_schema()
    assert "id" in schema and schema[
        "id"] == s and "count" in schema and schema[
            "count"] == 1 and "min_value" in schema and schema[
                "min_value"] == v and "max_value" in schema and schema[
                    "max_value"] == v
Ejemplo n.º 2
0
 def attributes(this):
     d = {}
     if isinstance(this, object.__class__):
         d = dict([(k, v) for k, v in this.__dict__.items()
                   if v.__class__ == Column])
     else:
         d = dict([(k, v) for k, v in this.__class__.__dict__.items()
                   if v.__class__ == Column])
     if "id" not in d.keys():
         d["id"] = Column(type=Type.int)
     return d
Ejemplo n.º 3
0
def test_get_shema(s, v, e):
    column = Column(s)
    column.add_value(v, e)
    schema = column.get_schema()
    assert "id" in schema
    assert schema["id"] == s
    assert "count" in schema
    assert schema["count"] == 1
    assert "min_value" in schema
    assert schema["min_value"] == v
    assert "max_value" in schema
    assert schema["max_value"] == v
Ejemplo n.º 4
0
    def apply_filter(self, filter):
        column_name = filter["column"]
        if column_name not in self.columns:
            logging.error("table.apply_filter wrong column: %s" % column_name)
            return self

        if filter["from"] > filter["to"]:
            logging.error("table.apply_filter wrong from-to: %s" % column_name)
            return self

        filtered_table = Table(self.id)
        for tmp_column_name in self.columns:
            filtered_table.columns[tmp_column_name] = Column(tmp_column_name)

        column = self.columns[column_name]
        for i in range(len(column.values)):
            value = column.values[i]
            if (value >= filter["from"]) and (value <= filter["to"]):
                filtered_table.add_row(self.get_row(i))

        return filtered_table
Ejemplo n.º 5
0
def test_init(s):
    column = Column(s)
    assert column and column.id == s
Ejemplo n.º 6
0
def test_get_error_value(s, v, e):
    column = Column(s)
    column.add_value(v, e)
    assert column.get_error_value(0) == e
Ejemplo n.º 7
0
def test_add_value(s, v, e):
    column = Column(s)
    column.add_value(v, e)
    assert len(column.values) == 1
Ejemplo n.º 8
0
 def add_columns(self, column_names):
     for i in range(len(column_names)):
         self.columns[column_names[i]] = Column(column_names[i])
Ejemplo n.º 9
0
class Model:
    id = Column(type=Type.int)

    def __new__(cls, *args, **kwargs):
        if not cls.is_exist_table():
            cls.create()
        else:
            attributes = Model.attributes(cls)
            diff = cls.difference(attributes)
            if diff is not None:
                for k, v in diff.items():
                    if v == "new":
                        column = getattr(cls, k)
                        cls.add_column(k, column)
        return super().__new__(cls)

    def __init__(self):
        pass

    @classmethod
    def query(cls, where=[], order=[], limit=None):
        criteria = Locator.query(cls)
        return criteria.query(where, order, limit)

    @classmethod
    def all(cls):
        criteria = Locator.query(cls)
        return criteria.all()

    @classmethod
    def size(cls):
        criteria = Locator.query(cls)
        return criteria.size()

    @classmethod
    def create(cls):
        criteria = Locator.query(cls)
        return criteria.create()

    @classmethod
    def remove(cls):
        pass

    @classmethod
    def is_exist_table(cls):
        criteria = Locator.query(cls)
        return criteria.is_exist_table()

    @classmethod
    def difference(cls, attributes):
        criteria = Locator.query(cls)
        return criteria.difference(attributes)

    @classmethod
    def add_column(cls, name, column):
        criteria = Locator.query(cls)
        return criteria.add_column(name, column)

    def save(self):
        connector = None
        try:
            connector = Database.connector()
            cursor = connector.cursor()
            try:
                sql = "insert into " + Model.table_name(self) + " ("
                for k, v in Model.attributes(self).items():
                    value = getattr(self, k)
                    if k == "id" and value is Column:
                        continue
                    sql += k + ","
                sql = sql[0:-1] + ") values("
                for k, v in Model.attributes(self).items():
                    value = getattr(self, k)
                    if k == "id" and value is Column:
                        continue
                    if isinstance(getattr(self, k), int):
                        sql += str(value) + ","
                    else:
                        if value is not None and value.__class__ is not Column:
                            sql += "\"" + str(value) + "\","
                        else:
                            sql += "null,"
                sql = sql[0:-1] + ")"
                cursor.execute(sql)
                connector.commit()
                pass
            except Exception as e:
                print('type:' + str(type(e)))
                print('args:' + str(e.args))
            finally:
                cursor.close()
        finally:
            connector.close()

    def delete(self):
        connector = None
        try:
            connector = Database.connector()
            cursor = connector.cursor()
            try:
                sql = "delete from " + Model.table_name(
                    self) + " where id = " + str(getattr(self, "id")) + ";"

                cursor.execute(sql)
                connector.commit()
                pass
            except Exception as e:
                print('type:' + str(type(e)))
                print('args:' + str(e.args))
            finally:
                cursor.close()
        finally:
            connector.close()

    @staticmethod
    def attributes(this):
        d = {}
        if isinstance(this, object.__class__):
            d = dict([(k, v) for k, v in this.__dict__.items()
                      if v.__class__ == Column])
        else:
            d = dict([(k, v) for k, v in this.__class__.__dict__.items()
                      if v.__class__ == Column])
        if "id" not in d.keys():
            d["id"] = Column(type=Type.int)
        return d

    @staticmethod
    def table_name(this):
        return re.sub("([A-Z])", lambda x: "_" + x.group(1).lower(),
                      this.__class__.__name__)[1:]
Ejemplo n.º 10
0
 def attributes(this):
     d = dict([(k, v) for k, v in this.__dict__.items()
               if v.__class__ is Column])
     if "id" not in d.keys():
         d["id"] = Column(type=Type.int)
     return d
Ejemplo n.º 11
0
def test_get_value(s, v):
    column = Column(s)
    column.add_value(v)
    assert column.get_value(0) == v