← Selected Work

Apps & tools · Database project

PYxSQL

Python and MySQL end to end: a normalized schema, CRUD, joins, aggregate queries and logins stored as salted hashes.

normalized schema
3NF
salted password hashes
scrypt

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.