Why I built it
It's one of my first projects on GitHub, and one of my first in Python. I started it as Python automation with MySQL, and it has since shaped into something totally different. The main point was to understand relational databases by learning them on my own.
Problem
Raw database scripts tend to leave connections open, build queries out of strings and leave half-finished writes behind when something fails.
Approach
A small database layer built on a Python context manager, so every connection opens and closes in one place. Every query uses parameterized placeholders, and every write is committed or rolled back as one transaction.
The schema is in third normal form, with a foreign key that removes a person's contacts along with them. Logins store salted scrypt hashes, never plain passwords.
Results
The tests mock the database connection, so they run without a MySQL server. It grew from standalone scripts into a structured, tested project.