Skip to content

SpaceShaman/ORMagic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ORMagic

GitHub License Tests Codecov PyPI - Python Version PyPI - Version Code style: black Linting: Ruff Pydantic SQLite 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 database.

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

Or you can install the latest version from the GitHub repository:

git clone git@github.com:SpaceShaman/ORMagic.git
cd ORMagic
pip install .

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
  • Functions
    • Aggregate functions
    • String functions
    • Date and time functions
    • Mathematical functions
    • Control flow functions
  • Migrations
  • Integration with other databases

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