8 comments

[ 3.6 ms ] story [ 24.9 ms ] thread
Orator is a brand new ORM for Python following the ActiveRecord pattern with a pinch of magic in it.

Its main goal is simplicity. I want it to be really easy to read and write with useful features out of the box (relationships decorators, timestampable models, soft deletes, protection against mass assigment, model events, caching).

I started it as a personal need for simplicity when defining my models which is one of the things I like about Ruby On Rails.

It is inspired by the database part of the Laravel PHP framework, but modified to be more pythonic.

I'll ask the inevitable question: how does this compare to SQLAlchemy ORM?
I've been using SQLAlchemy for quite some time now and it's a rich and powerful ORM, no doubt.

However, I found it to sometimes be a bit too complex for simple use cases.

Orator aims at simplicity. You can define your models quickly in a natural fashion. For that, Orator uses some magic and conventions (you do not need to define your model columns for example).

Regarding features, Orator provides useful ones out of the box compared to default SQLAlchemy (timestampable models, soft deletes).

Performance-wise, I have made some small benchmarks on my end, and Orator stands up pretty well but it some cases it is not as efficient as SQLAlchemy due to the ActiveRecord pattern, but nothing drastic.

It is not just inspired, but it is Eloquent for Python, nice!
Hi, looks very nice! Would you like to write about what are the main differences compared to sqlalchemy? Thanks!
This looks pretty nice. Aside from wondering how it compares to SQLAlchemy, I'm also interested in how mature you believe it to be currently.
Currently, I still consider it to be in beta, due to the fact that, for now, it has not been used widely.

However, I've been using it on a production project since the 0.4 version without any problem.

I hope to have some feedback to fix and improve things and reach the first stable version.

I don't know what functional merits this might have over SQLAlchemy, but I will say its API looks much nicer, cleaner, and simpler than SQLAlchemy.