Files
SCOicideSquad/execute_identifier_update.py
2026-08-10 15:57:08 +02:00

69 lines
3.3 KiB
Python

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