예제 #1
0
    def test_normal_index(self, file_creator, index_list, expected):
        db_path = "test_index.sqlite"
        runner = CliRunner()

        with runner.isolated_filesystem():
            file_path = file_creator()
            result = runner.invoke(
                cmd, ["--index", index_list, "file", file_path, "-o", db_path])
            print_traceback(result)
            assert result.exit_code == ExitCode.SUCCESS

            extractor = SqliteSchemaExtractor(db_path)

            assert extractor.dumps() == expected
예제 #2
0
def get_schema_extractor(source, verbosity_level):
    if verbosity_level >= MAX_VERBOSITY_LEVEL:
        return SqliteSchemaExtractor(source,
                                     verbosity_level=0,
                                     output_format="table")

    if verbosity_level >= 1:
        return SqliteSchemaExtractor(source,
                                     verbosity_level=3,
                                     output_format="text")

    if verbosity_level == 0:
        return SqliteSchemaExtractor(source,
                                     verbosity_level=0,
                                     output_format="text")

    raise ValueError("invalid verbosity_level: {}".format(verbosity_level))
예제 #3
0
def get_schema_extractor(source, verbosity_level):
    found_ptw = True
    try:
        import pytablewriter  # noqa: W0611
    except ImportError:
        found_ptw = False

    if verbosity_level >= MAX_VERBOSITY_LEVEL and found_ptw:
        return SqliteSchemaExtractor(source,
                                     verbosity_level=0,
                                     output_format="table")

    if verbosity_level >= 1:
        return SqliteSchemaExtractor(source,
                                     verbosity_level=3,
                                     output_format="text")

    if verbosity_level == 0:
        return SqliteSchemaExtractor(source,
                                     verbosity_level=0,
                                     output_format="text")

    raise ValueError("invalid verbosity_level: {}".format(verbosity_level))
예제 #4
0
    def __require_rename_table(self, src_con, src_table_name):
        if not self.__dst_con.has_table(src_table_name):
            return False

        if (self.__dst_con.get_attr_name_list(src_table_name) !=
                src_con.get_attr_name_list(src_table_name)):
            return True

        con_schema_extractor = SqliteSchemaExtractor(self.__dst_con,
                                                     verbosity_level=1)
        con_mem_schema_extractor = SqliteSchemaExtractor(src_con,
                                                         verbosity_level=1)

        if (con_schema_extractor.get_database_schema() ==
                con_mem_schema_extractor.get_database_schema()):
            return False

        return True
예제 #5
0
    def __require_rename_table(self, tabledata):
        con_mem = simplesqlite.connect_sqlite_memdb()
        con_mem.create_table_from_tabledata(tabledata=tabledata)

        if not self.__dst_con.has_table(tabledata.table_name):
            return (False, con_mem)

        if self.__dst_con.get_attr_name_list(tabledata.table_name) != tabledata.header_list:
            return (True, con_mem)

        con_schema_extractor = SqliteSchemaExtractor(
            self.__dst_con, verbosity_level=1)
        con_mem_schema_extractor = SqliteSchemaExtractor(
            con_mem, verbosity_level=1)

        if con_schema_extractor.get_database_schema() == con_mem_schema_extractor.get_database_schema():
            return (False, con_mem)

        return (True, con_mem)