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()
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')