Skip to content

jonasps/post_orm

Repository files navigation

PostgreSQL Python ORM

A minimal Python ORM for interacting with a PostgreSQL database (using psycopg2)

Installation

pip install post-orm

Example

from post_orm import Database, Column, Table, ForeignKey

db = Database(
    database="test_database",
    user="postgres",
    password="1234",
    host="localhost",
    port="5432",
)

# Create tables
class School(Table):
    country = Column(str)
    name = Column(str)


class Student(Table):
    name = Column(str)
    school = ForeignKey(School)


db.create([School, Student])

# Save school
school = School(name="Hogwarts", country="England")
db.save(school)

# Save students
harry = Student(name="Harry Potter", school=school)
ron = Student(name="Ron Weasley", school=school)
db.save([harry, ron])

# Make queries
all_students = db.all(Student)
harrys_school = db.query(Student, name="Harry Potter", limit=1).school # use limit=1 to return a single object.
hogwarts = db.query(School, country="Eng%", limit=1)  # use % for wildcard search.

assert harrys_school.country == hogwarts.country

Run tests in Docker

Prepare a test-database

docker run --rm -P -p 127.0.0.1:5432:5432 -e POSTGRES_PASSWORD="1234" --name pg postgres:alpine
psql postgresql://postgres:1234@localhost:5432/postgres
CREATE DATABASE test_database;

Run tests

python -m pytest .

This project was heavily inspiered by the SQLite ORM in this course on testdriven.io

About

A minimal Python ORM for interacting with a PostgreSQL database

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages