Skip to main content

A high-performance ORM for Python with support for migrations, relations, and caching.

Project description

Hermes ORM

Latest Version GitHub stars GitHub forks GitHub license

Hermes ORM is a modern Python ORM designed for simplicity, flexibility, and performance. With support for relational mappings, migrations, and advanced querying, Hermes ORM is tailored for developers who need a powerful yet intuitive tool for managing database operations in their applications.


🚀 Key Features

  • Dynamic Model Mapping: Automatically map Python classes to database tables with field validation and relational support.
  • Advanced Query Builder: Intuitive querying with dynamic SELECT, INSERT, UPDATE, and DELETE statements.
  • Rich Relationships: Support for One-to-One, One-to-Many, Many-to-Many, and polymorphic Morph relationships.
  • Migrations Manager: Create, apply, and rollback migrations seamlessly.
  • Asynchronous & Synchronous Database Operations: Flexible execution modes to match your application’s needs.
  • Caching Mechanisms: Built-in query caching for optimized performance.
  • Debugging & Logging: Configurable debug and logging options for streamlined troubleshooting.
  • Open for Personal & Commercial Use: Use Hermes ORM freely in personal and commercial projects (not for resale as a standalone product).

🛠️ Getting Started

Step 1: Install Hermes ORM

Install Hermes ORM via pip:

pip install hermes-orm

Step 2: Define Your Models

Define models that represent your database structure:

from hermes.model import BaseModel
from hermes.fields import IntegerField, StringField, ForeignKeyField

class User(BaseModel):
    id = IntegerField(primary_key=True)
    name = StringField(max_length=255, nullable=False)

class Post(BaseModel):
    id = IntegerField(primary_key=True)
    user_id = ForeignKeyField("User", nullable=False)
    content = StringField(nullable=False)

Step 3: Run Migrations

Use the CLI to generate and apply migrations:

hermes make_migration create_users_table create
hermes migrate

Step 4: Query the Database

Perform operations on your models:

# Create a user
user = User(name="Alice")
user.save(db_connection)

# Fetch all posts
posts = Post.all(db_connection)

# Add a post for a user
post = Post(user_id=user.id, content="Hello, Hermes!")
post.save(db_connection)

🧩 Supported Relationships

  • One-to-One: Easily map one-to-one relationships with OneToOne fields.
  • One-to-Many: Establish hierarchical relationships with OneToMany.
  • Many-to-Many: Simplify complex mappings with ManyToMany pivot tables.
  • Polymorphic: Use MorphOne and MorphMany for flexible, type-based relations.

Each relationship is implemented with robust utilities for querying and manipulation.


📦 Latest Version

  • Version: 1.0.0
  • Release Date: November 28, 2024

🔍 Project Status

Closed Issues Enhancement Issues Bug Issues

Hermes ORM is under active development, with new features and improvements added regularly. Contributions and feedback are welcome!


📜 License and Usage

Hermes ORM is free to use for both personal and commercial projects. However, Hermes ORM itself cannot be resold or distributed as a standalone product.


🤝 Contributors

Developed and maintained by Altxria Inc. with contributions from a growing community of developers.

Contributors

See All Contributors


❤️ Support Hermes ORM

If you find Hermes ORM useful, consider supporting its development and ongoing maintenance:

Sponsor Hermes ORM

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hermes_orm-0.1.1.tar.gz (18.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hermes_orm-0.1.1-py3-none-any.whl (19.9 kB view details)

Uploaded Python 3

File details

Details for the file hermes_orm-0.1.1.tar.gz.

File metadata

  • Download URL: hermes_orm-0.1.1.tar.gz
  • Upload date:
  • Size: 18.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.8

File hashes

Hashes for hermes_orm-0.1.1.tar.gz
Algorithm Hash digest
SHA256 4e88b2c7e3f75406bd620cd20f3826d518c4e5d9ec175a72a94cb6275e39f511
MD5 0d46a7b2915c6d9a0c73e92caeadda50
BLAKE2b-256 b8bee978f697bac3df31d2c66aa0941c2b60c6eda77f29f2ef174ee341bc38ce

See more details on using hashes here.

File details

Details for the file hermes_orm-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: hermes_orm-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 19.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.8

File hashes

Hashes for hermes_orm-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 34dd85cd660aee0f9e1a64d8f1f2ba35641565e39aa1c4508339fe6fd2e4982a
MD5 c728af1bca4d850c52fcba7fcacd533b
BLAKE2b-256 d6ed9a8f818cd1c3208c67a442f6ef33080541a1d5f663f41c9ced233630a548

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page