Tech Stack: Python, MySQL, PyMySQL, BeautifulSoup, Selenium, CSV, SQL Stored Procedures, Command-Line Interface
Game Review Database Platform is a Python and MySQL-based command-line application designed to collect, manage, and display video game information and reviews from both players and media sources. The system stores structured game data such as titles, descriptions, release dates, genres, platforms, developers, publishers, staff credits, user reviews, and media reviews.
The project was built to simulate a real-world game review platform where different types of users can create accounts, browse game information, post reviews, manage their own reviews, and search through game-related data. The database was populated using custom Python web scrapers that collected game information, critic reviews, user reviews, and staff credits from Metacritic.
The application uses Python as the main host language for user interaction, data import, and database communication. MySQL is used as the database management system, with a schema designed around relational entities such as games, users, media outlets, reviews, companies, platforms, genres, and staff.
To reduce duplicate data and improve consistency, many-to-many relationships are handled through junction tables, such as game-to-genre, game-to-platform, game-to-developer, game-to-publisher, and game-to-staff mappings. This structure makes the database easier to query, extend, and maintain.
The project also uses SQL stored procedures for common database operations, including inserting games, adding reviews, updating records, deleting accounts, and retrieving review information. This separates database logic from the Python application layer and improves maintainability.
For data collection, the project includes multiple Python scraping scripts. BeautifulSoup is used to parse static game information, while Selenium is used for pages where reviews are loaded dynamically. The collected data is saved into CSV files and then imported into the database using a custom CSV import script.
The database schema was designed to organize game-related data into clear relational entities. Core entities include:
Several many-to-many relationships are represented using junction tables. For example, one game can belong to multiple genres, appear on multiple platforms, have multiple developers and publishers, and include multiple staff members. This design improves data consistency and avoids storing repeated values directly inside the main game table.
The data pipeline follows this general process:
This pipeline helped transform unstructured web data into a structured relational database that can be queried and managed efficiently.
Through this project, I gained practical experience in relational database design, SQL schema development, stored procedures, Python-to-MySQL integration, command-line application design, and real-world data collection.
I also learned how to handle messy external data, normalize multi-valued fields, manage many-to-many relationships, and design a system that supports both data management and user interaction.
Possible future improvements include:
Game Review Database Platform is a Python and MySQL-based command-line database application for managing video game information and reviews. The system allows users and media accounts to register, browse game details, post reviews, edit or delete their own reviews, and search structured game-related data.
I designed and implemented a normalized relational database schema covering games, reviews, users, media outlets, companies, platforms, genres, and staff credits. The project also includes custom Python web scrapers built with BeautifulSoup and Selenium to collect game data, critic reviews, user reviews, and staff information from Metacritic. Data was cleaned, stored in CSV files, and imported into MySQL using Python scripts and SQL stored procedures.
This project strengthened my experience in database design, SQL stored procedures, Python-MySQL integration, data scraping, CSV data processing, and command-line application development.