Пример #1
0
def main():
    args = get_arguments()
    if args[0] == 'fill':
        db_tool.fill_database(*args[1:] + (SCHEMA_VERSION,))
    elif args[0] == 'stat':
        connector = SQLiteConnector()
        connector.create_connection(args[2])
        update_db.start_update(connector, SCHEMA_VERSION)
        StatClass = tool_config.get_stat_by_preset(args[1])
        if StatClass is None:
            print('No such statistics')
            die(tool_config.get_presets_info())
        stat = StatClass(connector, args[4], args[5])
        stat.save_to_file(args[3])
        connector.close_connection()
Пример #2
0
def fill_database(output_database, base_dir, contests_info_dir, mysql_config, origin, extra, schema_version):
    if 'clean' in extra:
        connection = create_new_database(output_database, 'tables_script.txt')
        logging.info("Database created successfully")
    else:
        connection = update_database(output_database)
        logging.info("Database is going to be updated")

    update_db.start_update(connection, schema_version)

    sqlite_cursor = connection.get_cursor()
    if not contests_info_dir:
        logging.warning("Contests info directory is not specified. Contests name won't be filled")
    try:
        if 'contests_names' in extra:
            fill_contests_names(sqlite_cursor, contests_info_dir, origin)
            connection.close_connection()
            exit()
        if 'hashes_only' in extra:
            fill_cases_hashes(sqlite_cursor, base_dir, origin, extra['start_from'])
            connection.close_connection()
            logging.info('Case hashes were filled successfully')
            logging.info('Connection closed')
            exit()
        fill_submits(sqlite_cursor, base_dir, origin, mysql_config)
        connection.commit()

        if 'no_hashes' not in extra:
            fill_cases_hashes(sqlite_cursor, base_dir, origin, extra['start_from'])

        fill_contests_names(sqlite_cursor, contests_info_dir, origin)

    except Exception:
        logging.exception('Exception caught')
        connection.close_connection()
        logging.info('Connection closed')
        exit()

    connection.close_connection()
    logging.info('Connection closed')