import sqlite3 import pathlib database_file_path = "game_database.sqlite" def execute_identifier_update(): if not pathlib.Path(database_file_path).exists(): print(f"Fehler: Die Datenbankdatei '{database_file_path}' wurde nicht gefunden.") raise SystemExit(1) old_player_identifier = input("Bitte gib die aktuelle ID ein: ").strip().upper() new_player_identifier = input("Bitte gib die neue gewünschte ID ein: ").strip().upper() if not old_player_identifier or not new_player_identifier: print("Fehler: Beide IDs müssen eingegeben werden.") raise SystemExit(1) if old_player_identifier == new_player_identifier: print("Die neue ID ist identisch mit der alten.") raise SystemExit(0) database_connection = sqlite3.connect(database_file_path) database_connection.isolation_level = None database_cursor = database_connection.cursor() try: database_cursor.execute("BEGIN TRANSACTION;") database_cursor.execute("SELECT display_name FROM player WHERE player_identifier = ?", (old_player_identifier,)) player_record = database_cursor.fetchone() if not player_record: print(f"Fehler: Es wurde kein Spieler mit der ID '{old_player_identifier}' gefunden.") database_cursor.execute("ROLLBACK TRANSACTION;") raise SystemExit(1) database_cursor.execute("SELECT display_name FROM player WHERE player_identifier = ?", (new_player_identifier,)) existing_player_record = database_cursor.fetchone() if existing_player_record: print(f"Fehler: Die ID '{new_player_identifier}' wird bereits von einem anderen Spieler verwendet.") database_cursor.execute("ROLLBACK TRANSACTION;") raise SystemExit(1) player_name = player_record[0] print(f"\nÄndere ID für Spieler '{player_name}' von '{old_player_identifier}' zu '{new_player_identifier}'...") database_cursor.execute("UPDATE player SET player_identifier = ? WHERE player_identifier = ?", (new_player_identifier, old_player_identifier)) database_cursor.execute("UPDATE player SET target_identifier = ? WHERE target_identifier = ?", (new_player_identifier, old_player_identifier)) database_cursor.execute("UPDATE player SET pending_attacker_identifier = ? WHERE pending_attacker_identifier = ?", (new_player_identifier, old_player_identifier)) database_cursor.execute("UPDATE kill_log SET killer_identifier = ? WHERE killer_identifier = ?", (new_player_identifier, old_player_identifier)) database_cursor.execute("UPDATE kill_log SET victim_identifier = ? WHERE victim_identifier = ?", (new_player_identifier, old_player_identifier)) database_cursor.execute("UPDATE kill_log SET victim_previous_target = ? WHERE victim_previous_target = ?", (new_player_identifier, old_player_identifier)) database_cursor.execute("COMMIT TRANSACTION;") print("\nErfolg! Die ID wurde überall in der Datenbank geaendert.") except sqlite3.Error as database_error: database_cursor.execute("ROLLBACK TRANSACTION;") print(f"\nEin Datenbankfehler ist aufgetreten: {database_error}") raise SystemExit(1) finally: database_connection.close() if __name__ == "__main__": execute_identifier_update()