Skip to content

Home

Introduction

pydangorm is a robust and user-friendly asynchronous ORM (Object-Relational Mapping) system tailored for ArangoDB, a powerful multi-model NoSQL database.

pydangorm is inspired by SQLAlchemy, a popular ORM system for SQL databases, It aims to provide a similar experience

Main Libraries

pydangorm is built upon the foundation of two primary libraries:

  • pydantic: An extremely popular data validation and settings management library for Python. In pydangorm, pydantic is utilized to provide robust model definitions and validation, ensuring that data interactions are clean, consistent, and error-free.

  • aioarango: An asynchronous driver for ArangoDB. It powers the core interactions with the ArangoDB database, making it possible for pydangorm to support asynchronous database operations, ensuring optimized I/O-bound tasks.

Features

  • Database Modeling: Easily define, validate, and interact with your database models. This includes support for both vertex and edge models (VertexModel and EdgeModel).

  • Pythonic Query Building: Constructing queries for ArangoDB in a SQLAlchemy way. With a Pythonic API, you can effortlessly build complex queries to retrieve or manipulate your data.

  • Session Management: Manage your database sessions and connections with ease. Whether it's connecting to the database or handling transactions, pydangorm has got you covered.

  • Collection Management: From creating indices to truncating collections, manage all your collection operations without hassle.

  • Asynchronous Support: pydangorm is designed for the modern web. With full asynchronous support, your I/O-bound database tasks will be lightning fast, ensuring your applications remain responsive and scalable.

  • Lazy Loading: pydangorm supports lazy loading, ensuring that data is only fetched when needed, optimizing performance and reducing memory usage.

Roadmap

  • Support for AQL Query Building including trversal
  • Support for VertexModel and EdgeModel
  • Support for VertexModel relationships via EdgeModel
  • Support for Model Saving and Updating (single instance)
  • Support for Model Saving and Updating (with relations)
  • Support for Model Deletion (single instance)
  • Support for Model Fetching (single instance)
  • Support for Model Fetching with relations and traversal
  • Support for Model Graph CRUD Operations
  • Support for Model Deletion Cascade
  • Support for pydantic v2.0
  • Support for Model Back Population

Contributions

We're actively looking for contributors to help improve pydangorm and expand its capabilities.

Whether you're a seasoned developer or just starting out, your contributions are valuable to us.

If you have ideas for new features, optimizations, or simply want to fix a bug, please check our contribution guidelines or reach out. Together, we can make pydangorm the best ArangoDB ORM for Python!