def parse_args()

in notebooks/mysql2spanner/MySqlToSpanner_parameterize_script.py [0:0]


    def parse_args(args: Optional[Sequence[str]] = None) -> Dict[str, Any]:
        parser = argparse.ArgumentParser()

        parser.add_argument(
            f"--{constants.MYSQL_HOST_ARG}",
            dest=constants.MYSQL_HOST,
            required=True,
            help="MySQL host or IP address",
        )

        parser.add_argument(
            f"--{constants.MYSQL_PORT_ARG}",
            dest=constants.MYSQL_PORT,
            default="3306",
            required=False,
            help="MySQL port (Default: 3306)",
        )

        parser.add_argument(
            f"--{constants.MYSQL_USERNAME_ARG}",
            dest=constants.MYSQL_USERNAME,
            required=True,
            help="MySQL username",
        )

        parser.add_argument(
            f"--{constants.MYSQL_PASSWORD_ARG}",
            dest=constants.MYSQL_PASSWORD,
            required=True,
            help="MySQL password",
        )

        parser.add_argument(
            f"--{constants.MYSQL_DATABASE_ARG}",
            dest=constants.MYSQL_DATABASE,
            required=True,
            help="MySQL database name",
        )

        parser.add_argument(
            f"--{constants.MYSQL_TABLE_LIST_ARG}",
            dest=constants.MYSQL_TABLE_LIST,
            required=False,
            default="",
            help="MySQL table list to migrate. "
            'Leave empty for migrating complete database else provide tables as "table1,table2"',
        )

        parser.add_argument(
            f"--{constants.MYSQL_OUTPUT_SPANNER_MODE_ARG}",
            dest=constants.MYSQL_OUTPUT_SPANNER_MODE,
            required=False,
            default=constants.OUTPUT_MODE_OVERWRITE,
            help="Spanner output write mode (Default: overwrite). "
            "Use append when schema already exists in Spanner",
            choices=[constants.OUTPUT_MODE_OVERWRITE, constants.OUTPUT_MODE_APPEND],
        )

        parser.add_argument(
            f"--{constants.SPANNER_INSTANCE_ARG}",
            dest=constants.SPANNER_INSTANCE,
            required=True,
            help="Spanner instance name",
        )

        parser.add_argument(
            f"--{constants.SPANNER_DATABASE_ARG}",
            dest=constants.SPANNER_DATABASE,
            required=True,
            help="Spanner database name",
        )

        parser.add_argument(
            f"--{constants.SPANNER_TABLE_PRIMARY_KEYS_ARG}",
            dest=constants.SPANNER_TABLE_PRIMARY_KEYS,
            required=True,
            help='Provide table & PK column which do not have PK in MySQL table {"table_name":"primary_key"}',
        )

        parser.add_argument(
            f"--{constants.MAX_PARALLELISM_ARG}",
            dest=constants.MAX_PARALLELISM,
            type=int,
            default=5,
            required=False,
            help="Maximum number of tables that will migrated parallelly (Default: 5)",
        )

        parser = get_common_args(parser)

        known_args: argparse.Namespace
        known_args, _ = parser.parse_known_args()

        return vars(known_args)