예제 #1
0
    def test_join(self):
        table1 = Table('table1', ['c1', 'c2'], ColumnTypes([int, int]))
        table1.append_row([1, 2])
        table1.append_row([1, 4])
        table1.append_row([2, 3])
        table2 = Table('table2', ['c1', 'c3'], ColumnTypes([int, str]))
        table2.append_row([1, 'str1'])
        table2.append_row([2, 'str2'])

        table3 = table1.join(table2, 'c1')

        rows_data = list(map(lambda x: x.data, table3.rows))
        self.assertTrue([1, 2, 'str1'] in rows_data)
        self.assertTrue([1, 4, 'str1'] in rows_data)
        self.assertTrue([2, 3, 'str2'] in rows_data)
예제 #2
0
    def test_persist(self):
        dbms: DBMS = DBMS()

        db1: Database = dbms.create_database('db1')
        table1 = Table('table1', ['c1', 'c2'], ColumnTypes([int, str]))
        table1.append_row([1, '1'])
        table1.append_row([2, '2'])
        table2 = Table('table2', ['c1', 'c2'], ColumnTypes([str, int]))
        table2.append_row(['1', 1])
        table2.append_row(['2', 2])
        table3 = Table('table3', ['c1', 'c3'], ColumnTypes([int, int]))
        table3.append_row([1, 1])
        table3.append_row([1, 2])
        table3.append_row([2, 1])
        table3.append_row([2, 2])
        db1.add_table(table1)
        db1.add_table(table2)
        db1.add_table(table3)

        db2: Database = dbms.create_database('db2')
        table3 = Table('table3', ['c1', 'c2'], ColumnTypes([Char, Color]))
        table3.append_row([Char('a'), Color('#ffffff')])
        table3.append_row([Char('b'), Color('#aaaaaa')])
        table4 = Table('table4', ['c1', 'c2'], ColumnTypes([Color, Char]))
        table4.append_row([Color('#ffffff'), Char('a')])
        table4.append_row([Color('#ffffff'), Char('a')])
        db2.add_table(table3)
        db2.add_table(table4)

        dbms.persist()
        DBMS.load()
        for database_name in dbms.get_databases_names():
            for table_name, table in dbms.get_database(
                    database_name)._tables.items():
                print(table.to_json())