69 lines
3.3 KiB
Python
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() |