A Python3 implementation of Postgres.
Testing against a real Postgres instance has a lot of drawbacks.
Also, fun.
Fully reimplementing Postgres in Python would be, as you expect, a pretty useless project, and a huge amount of work besides. That's not the goal here, so here are the shortcuts taken to get things manageable:
- It's all in-memory
- Concurrent transaction support is... limited
- Indexes are no-ops
- There's one execution strategy: full table scans
¯\_(ツ)_/¯
# Setup
python -m venv .venv # It's 2018, use a virtual env
. .venv/scripts/activate # Modify per your shell's flavor
pip install -r requirements.txt
# And to test your stuff
./setup.py lint
./setup.py test
- Table constraints
- Column constraints
Unlicense, so basically public domain. See license.md for details.