Python Project – Movie Rating and Analytics System

Master Python with 70+ Hands-on Projects and Get Job-ready - Learn Python

Program 1

# Project: Movie Ratings and Analytics System

import mysql.connector

# Connect to MySQL
db = mysql.connector.connect(
    host="localhost",
    user="root",
    password="root",   # <-- your MySQL password
    database="movie_rating_system"    # <-- your database name
)
cursor = db.cursor()

# ------------------ Functions ------------------

def insert_movie():
    try:
        movie_id = int(input("Enter Movie ID: "))
        title = input("Enter Movie Title: ")
        release_year = int(input("Enter Release Year: "))
        category_id = int(input("Enter Category ID: "))
        
        query = "INSERT INTO movies (movie_id, title, release_year, category_id) VALUES (%s, %s, %s, %s)"
        cursor.execute(query, (movie_id, title, release_year, category_id))
        db.commit()
        print("Movie inserted successfully!\n")
    except Exception as e:
        print(f" Error: {e}\n")

def insert_actor():
    try:
        actor_id = int(input("Enter Actor ID: "))
        actor_name = input("Enter Actor Name: ")
        
        query = "INSERT INTO actors (actor_id, actor_name) VALUES (%s, %s)"
        cursor.execute(query, (actor_id, actor_name))
        db.commit()
        print("Actor inserted successfully!\n")
    except Exception as e:
        print(f"Error: {e}\n")

def insert_user():
    try:
        user_id = int(input("Enter User ID: "))
        user_name = input("Enter User Name: ")
        
        query = "INSERT INTO users (user_id, user_name) VALUES (%s, %s)"
        cursor.execute(query, (user_id, user_name))
        db.commit()
        print(" User inserted successfully!\n")
    except Exception as e:
        print(f" Error: {e}\n")

def insert_rating():
    try:
        rating_id = int(input("Enter Rating ID: "))
        movie_id = int(input("Enter Movie ID: "))
        user_id = int(input("Enter User ID: "))
        rating = float(input("Enter Rating (out of 10): "))
        rating_date = input("Enter Rating Date (YYYY-MM-DD): ")
        
        query = "INSERT INTO ratings (rating_id, movie_id, user_id, rating, rating_date) VALUES (%s, %s, %s, %s, %s)"
        cursor.execute(query, (rating_id, movie_id, user_id, rating, rating_date))
        db.commit()
        print(" Rating inserted successfully!\n")
    except Exception as e:
        print(f" Error: {e}\n")

def show_movies():
    try:
        cursor.execute("SELECT movie_id, title, release_year FROM movies")
        movies = cursor.fetchall()
        print("\n All Movies:")
        for m in movies:
            print("-------------------------------------------------")
            print(f"ID: {m[0]} | Title: {m[1]} | Year: {m[2]}")
        print()
    except Exception as e:
        print(f"Error: {e}\n")

def show_top_movies():
    try:
        cursor.execute("""
            SELECT m.title, AVG(r.rating) as avg_rating
            FROM movies m
            JOIN ratings r ON m.movie_id = r.movie_id
            GROUP BY m.title
            ORDER BY avg_rating DESC
            LIMIT 5
        """)
        top_movies = cursor.fetchall()
        print("\nTop Rated Movies:")
        for tm in top_movies:
            print("-------------------------------------------------")
            print(f"Movie: {tm[0]} | Average Rating: {tm[1]:.2f}")
        print()
    except Exception as e:
        print(f"Error: {e}\n")

def show_movies_by_category():
    try:
        category_id = int(input("Enter Category ID to Filter Movies: "))
        query = """
            SELECT m.title, c.category_name
            FROM movies m
            JOIN categories c ON m.category_id = c.category_id
            WHERE m.category_id = %s
        """
        cursor.execute(query, (category_id,))
        movies = cursor.fetchall()
        print("\n Movies in Selected Category:")
        for m in movies:
            print(f"Title: {m[0]} | Category: {m[1]}")
        print()
    except Exception as e:
        print(f" Error: {e}\n")

def show_top_actors():
    try:
        cursor.execute("""
            SELECT a.actor_name, AVG(r.rating) as avg_rating
            FROM actors a
            JOIN movie_actor ma ON a.actor_id = ma.actor_id
            JOIN ratings r ON ma.movie_id = r.movie_id
            GROUP BY a.actor_name
            ORDER BY avg_rating DESC
            LIMIT 5
        """)
        actors = cursor.fetchall()
        print("\n Top Actors by Ratings:")
        for a in actors:
            print(f"Actor: {a[0]} | Avg Rating: {a[1]:.2f}")
        print()
    except Exception as e:
        print(f" Error: {e}\n")

# ------------------ Menu ------------------

def menu():
    while True:
        print("\n===  Movie Ratings and Analytics System ===")
        print("1. Insert New Movie")
        print("2. Insert New Actor")
        print("3. Insert New User")
        print("4. Insert New Rating")
        print("5. Show All Movies")
        print("6. Show Top Rated Movies")
        print("7. Show Movies by Category")
        print("8. Show Top Actors by Rating")
        print("9. Exit")
        print("-----------------------------------------------------------")
        choice = input("Enter your choice (1-9): ")
        
        if choice == '1':
            insert_movie()
        elif choice == '2':
            insert_actor()
        elif choice == '3':
            insert_user()
        elif choice == '4':
            insert_rating()
        elif choice == '5':
            show_movies()
        elif choice == '6':
            show_top_movies()
        elif choice == '7':
            show_movies_by_category()
        elif choice == '8':
            show_top_actors()
        elif choice == '9':
            print("Exiting Program. Goodbye!")
            break
        else:
            print(" Invalid choice! Please select again.\n")

# Start the program
menu()

 

 

Did we exceed your expectations?
If Yes, share your valuable feedback on Google

courses
Image

DataFlair Team

DataFlair Team provides high-impact content on programming, Java, Python, C++, DSA, AI, ML, data Science, Android, Flutter, MERN, Web Development, and technology. We make complex concepts easy to grasp, helping learners of all levels succeed in their tech careers.

Leave a Reply

Your email address will not be published. Required fields are marked *