Skip to main content
ORMagic

GitHub License Tests Codecov PyPI - Python Version PyPI - Version Code style: black Linting: Ruff Pydantic SQLite PostgreSQL Pytest Material for MkDocs

The main goal of ORMagic is to provide a simple and easy-to-use ORM for Python, that is easy to understand and use, while still providing the necessary features to interact with a database. Is based on the Pydantic model and extends it with the ability to interact with SQLite and PostgreSQL databases.

Simple example

from ormagic import DBModel

class User(DBModel):
    name: str
    age: int

User.create_table()

User(name="John", age=30).save()

User.get(name="John")
>>> User(id=1, name='John', age=30)

You can find more examples and detailed documentation at spaceshaman.github.io/ORMagic/

Installation

You can install ORMagic using pip:

pip install ORMagic

By default, ORMagic uses SQLite as a database, so you don't need to install any additional dependencies. But if you want to use another database, you need to install the appropriate database driver, for example, for PostgreSQL you need to install psycopg2, you can do it with the following command:

pip install ORMagic[postgres]

Additionally, to use a database other than SQLite, you need to set the ORMAGIC_DATABASE_URL environment, more information about that you can find in the documentation.

Documentation

The full documentation is available at spaceshaman.github.io/ORMagic/

Features and Roadmap

  • Define table schema using Pydantic models
  • Basic CRUD operations
    • Save data to the database
    • Read data from the database
    • Update data in the database
    • Delete data from the database
  • Relationships between tables
    • One-to-many
      • Create a tables with a foreign key
      • Save data with a foreign key
      • Read data with a foreign key
      • Update data with a foreign key
      • Delete data with a foreign key
        • Cascade
        • Set null
        • Restrict
        • Set default
        • No action
    • One-to-one
    • Many-to-many
  • Unique constraints
  • Remove table
  • Read all data from the database
  • Filter data and retrieve multiple records
    • Equal
    • Not equal
    • Greater than
    • Greater than or equal
    • Less than
    • Less than or equal
    • Like (Pattern matching with % and _)
    • Not like (Pattern matching with % and _)
    • In (List of values)
    • Not in (List of values)
    • Between (Two values)
    • Not between (Two values)
    • Q objects to combine filters (AND, OR, NOT)
  • Protect against SQL injection
  • Order by
  • Limit and offset
  • Update table schema
    • Add new column
    • Rename column
    • Drop column
  • Custom primary key
  • Transactions
  • Integration with databases
    • SQLite
    • PostgreSQL
    • MySQL
  • Functions
    • Aggregate functions
    • String functions
    • Date and time functions
    • Mathematical functions
    • Control flow functions
  • Migrations

Changelog

Changes for each release are thoroughly documented in release notes

Contributing

Contributions are welcome! Feel free to open an issue or submit a pull request. I would like to keep the library to be safe as possible, so i would appreciate if you cover any new feature with tests to maintain 100% coverage.

Install in a development environment

  1. First, clone the repository:

    git clone git@github.com:SpaceShaman/ORMagic.git
    
  2. Install poetry if you don't have, here you can find the instructions

  3. Create a virtual environment and install the dependencies:

    cd ORMagic
    poetry install --no-root
    
  4. Activate the virtual environment:

    poetry shell
    

Run tests

If you in the virtual environment, you can run the tests with the following command:

pytest

You can also run the tests with coverage:

pytest --cov=ormagic

License

This project is licensed under the terms of the MIT license

Metadata

Release files for ORMagic 0.16.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ORMagic 0.16.1
File Size Uploaded
ormagic-0.16.1.tar.gz 12.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ORMagic 0.16.1
File Interpreter ABI Platform
ormagic-0.16.1-py3-none-any.whl Python 3 none any Details

Total release size: 27.6 kB

Release files / ormagic-0.16.1.tar.gz

Download URL ormagic-0.16.1.tar.gz
Size 12.7 kB
Tags Source
SHA-256 checksum
How to use checksums
c987ebd8f9efe66d1390eac294bb6b7e3d78581fd21f0d65f898c5d97c68ed49
BLAKE2b-256 checksum
How to use checksums
565e809aa965f1e1e3871c6f9a3aedfbbd84fce916d90e17731668ad747d40cf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.0.1 CPython/3.12.8 Linux/6.5.0-1025-azure

Release files / ormagic-0.16.1-py3-none-any.whl

Download URL ormagic-0.16.1-py3-none-any.whl
Size 14.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
68d145f7bd8338668577d264f343ed3d0c024aefe66a2936bae81d311c10cee4
BLAKE2b-256 checksum
How to use checksums
3e1b8b587d89f7604de8a9118c87359fec2cd8185eea510466392a9e7ae6d782
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.0.1 CPython/3.12.8 Linux/6.5.0-1025-azure

Release history Release notifications | RSS feed

This release

0.16.1 This release

2 release files

0.15.0

2 release files

0.14.0

2 release files

0.13.2

2 release files

0.13.1

2 release files

0.13.0

2 release files

0.12.1

2 release files

0.12.0

2 release files

0.11.0

2 release files

0.10.1

2 release files

0.9.0

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page