#!/usr/bin/env python3 """ Simple test script to verify database connection and fuzzy search. """ import psycopg2 from fuzzywuzzy import fuzz import sys def test_db_connection(): """Test database connection.""" try: # Try different connection methods hosts = ["localhost", "172.18.0.5", "musicbrainz-docker-db-1"] for host in hosts: print(f"Trying to connect to {host}...") try: conn = psycopg2.connect( host=host, port=5432, database="musicbrainz", user="musicbrainz", password="musicbrainz", connect_timeout=5 ) print(f"โœ… Successfully connected to {host}") # Test a simple query cursor = conn.cursor() cursor.execute("SELECT COUNT(*) FROM artist") count = cursor.fetchone()[0] print(f"๐Ÿ“Š Found {count:,} artists in database") # Test fuzzy search test_fuzzy_search(cursor) conn.close() return True except Exception as e: print(f"โŒ Failed to connect to {host}: {e}") continue except Exception as e: print(f"โŒ Database connection failed: {e}") return False def test_fuzzy_search(cursor): """Test fuzzy search functionality.""" print("\n๐Ÿ” Testing fuzzy search...") test_artists = [ "The Beatles", "Queen", "Pink Floyd", "Coldplay", "AC/DC", "Bruno Mars", "Taylor Swift" ] for artist in test_artists: print(f"\nSearching for: {artist}") # First try exact match cursor.execute("SELECT name FROM artist WHERE name = %s", (artist,)) exact_matches = cursor.fetchall() if exact_matches: print(f" โœ… Exact match found: {exact_matches[0][0]}") continue # If no exact match, try fuzzy search with more artists cursor.execute("SELECT name FROM artist LIMIT 10000") # Increased limit artists = [row[0] for row in cursor.fetchall()] # Find best match best_match = None best_score = 0 for db_artist in artists: score = fuzz.ratio(artist.lower(), db_artist.lower()) if score > best_score: best_score = score best_match = db_artist if best_score >= 80: print(f" โœ… Found: {best_match} (score: {best_score})") else: print(f" โŒ No good match found (best: {best_match} with score {best_score})") if __name__ == "__main__": print("๐Ÿงช Testing MusicBrainz Database Connection and Fuzzy Search") print("=" * 60) success = test_db_connection() if not success: print("\nโŒ All connection attempts failed") print("๐Ÿ’ก The database might not be accessible from the host") print("๐Ÿ’ก Try running the script inside the Docker container") sys.exit(1) else: print("\nโœ… Database connection and fuzzy search test completed!")