Пример #1
0
    def get_table(self, table_name: str) -> DBTable:
        with open(f"{DB_ROOT}/{table_name}/meta_data.json") as the_file:
            meta_data = json.load(the_file)

        fields = [db_api.DBField(name, str) for name in meta_data["must"]]

        return DBTable(table_name, fields, meta_data["key"])
Пример #2
0
    def __init__(self):
        self.tables_list = {}

        files = os.listdir(db_api.DB_ROOT)
        files = list(filter(lambda f: f.endswith('.json'), files))

        db = DBTable("Students", [
            db_api.DBField("ID", str),
            db_api.DBField("edges in", Dict[str, Edge]),
            db_api.DBField("edges out", Dict[str, Edge])
        ], "ID")

        for file in files:
            db.vertex_list.append(file[:-5])

        self.tables_list["Students"] = db
Пример #3
0
    def get_table(self, table_name: str) -> db_api.DBTable:
        if table_name not in db_table.table_list:
            raise Exception

        table = db_table.table_list[table_name]
        return db_table.DBTable(table['name'], [
            db_api.DBField(field[0], dic_types[field[1]])
            for field in table['fields']
        ], table['key_field_name'], table['amount'])
Пример #4
0
 def get_table(self, table_name: str) -> db_api.DBTable:
     types = {"str": str, "int": int}
     DBtable_data = self.read_metadata()[table_name]
     DBField_data = [
         db_api.DBField(iter[0], types[iter[1]])
         for iter in DBtable_data["fields"]
     ]
     table = DBTable(table_name, DBField_data,
                     DBtable_data["key_field_name"])
     return table
Пример #5
0
 def delete_records(self, criteria: List[db_api.SelectionCriteria]) -> None:
     for file in self.files:
         rows = readFromFile(file)
         rows = rows[1:]
         for row in rows:
             flag = True
             for c in criteria:
                 if not calculateOp(
                         type(c.value)(row[self.fields.index(
                             db_api.DBField(c.field_name, type(c.value)))]),
                         c.value, c.operator):
                     flag = False
             if flag:
                 self.delete_record(row[0])
Пример #6
0
    def get_table(self, table_name: str) -> DBTable:
        if not self.table_exist(table_name):
            raise ValueError("Table not exist")

        DBtable_data = db_metadata[table_name]["DBtable"]
        DBField_data = [
            db_api.DBField(iter[0], types[iter[1]])
            for iter in DBtable_data["fields"]
        ]
        table = DBTable(table_name, DBField_data,
                        DBtable_data["key_field_name"])

        with (DB_ROOT / f'{table.key_field_name}_index_{table.name}.json'
              ).open('r') as metadata_file:
            table.key_index = json.load(metadata_file)
        return table
Пример #7
0
    def query_table(
            self,
            criteria: List[db_api.SelectionCriteria]) -> List[Dict[str, Any]]:
        listToReturn = []
        for file in self.files:
            rows = readFromFile(file)
            rows = rows[1:]
            for row in rows:
                flag = True
                for c in criteria:
                    if not calculateOp(
                            type(c.value)(row[self.fields.index(
                                db_api.DBField(c.field_name, type(c.value)))]),
                            c.value, c.operator):
                        flag = False

                if flag:
                    my_dic = {}
                    for i, field in enumerate(self.fields):
                        my_dic[field.name] = row[i]
                    listToReturn.append(my_dic)
        return listToReturn
Пример #8
0
def convert_to_db_fields(args):
    fields = []
    for k, v in args.items():
        fields.append(db_api.DBField(k, str_to_class(v)))
    return fields
import db_api as db
import os


def print_record(record_dict):
    return str(record_dict).replace("{", "[").replace("}", "]")


sick_fields = [db.DBField('ID', int), db.DBField('name', str),
               db.DBField('symptomatic', bool), db.DBField('age', int)]
scientist_fields = [db.DBField('ID', int), db.DBField('name', str), db.DBField('address', str)]

sick_to_scientist_fields = [db.DBField('sick_ID', int), db.DBField('scientist_ID', str)]

address = ["Jerusalem", "Tel - Aviv", "Haifa"]

fight_corona_db = db.DataBase()

assert fight_corona_db.num_tables() == 0

# Create tables
sick_table = fight_corona_db.create_table("Sick", sick_fields, 'ID')
scientists_table = fight_corona_db.create_table("Scientists", scientist_fields, 'ID')
sick_to_scientist_table = fight_corona_db.create_table("Sick_to_scientist",
                                                       sick_to_scientist_fields, 'sick_ID')

assert fight_corona_db.num_tables() == 3

for idx in range(100):
    sick_table.insert_record({'ID': idx, 'name': "sick" + str(idx),
                              'symptomatic': True if idx % 2 else False, 'age': idx + idx % 4})
Пример #10
0
 def get_table(self, table_name: str) -> DBTable:
     meta_data = files.load(f"{DB_ROOT}/{table_name}/meta_data.json")
     fields = [db_api.DBField(name, str) for name in meta_data["must"]]
     return DBTable(table_name, fields, meta_data["key"], meta_data)
Пример #11
0
        self.numOfTables -= 1

    def get_tables_names(self) -> List[Any]:
        return list(self.tables.keys())


'''
    def query_multiple_tables(
            self,
            tables: List[str],
            fields_and_values_list: List[List[SelectionCriteria]],
            fields_to_join_by: List[str]
    ) -> List[Dict[str, Any]]:
        raise NotImplementedError'''

field1 = db_api.DBField("name", str)
field2 = db_api.DBField("age", int)
field3 = db_api.DBField("id", int)
table = DBTable()
table.createNew("Person", [field3, field1, field2], "id")
table.insert_record({"name": "Pnini", "age": 5, "id": 315437145})
table.insert_record({"name": "Shira", "age": 4, "id": 211426754})
table.create_index("age")
table.insert_record({"name": "Elisheva", "age": 11, "id": 333094951})
for i in table.index:
    print(i)
    print(list(table.index[i].keys()))
    print(list(table.index[i].values()))
table.delete_record(315437145)
for i in table.index:
    print(i)
Пример #12
0
    def get_tables_names(self) -> List[Any]:
        return list(self.tables_list.keys())

    def query_multiple_tables(
            self, tables: List[str],
            fields_and_values_list: List[List[SelectionCriteria]],
            fields_to_join_by: List[str]) -> List[Dict[str, Any]]:
        raise NotImplementedError


if __name__ == '__main__':
    vertex = []

    db = DBTable("my table", [
        db_api.DBField("name", str),
        db_api.DBField("population", int),
        db_api.DBField("edges in", Dict[str, Edge]),
        db_api.DBField("edges out", Dict[str, Edge])
    ], "name")

    Tel_Aviv = {
        "name": "Tel Aviv",
        "population": 100,
        "edges in": {
            "Yafo": 16
        },
        "edges out": {
            "Eilat": 80,
            "Yahud": 30
        }