Skip to main content

A lightweight Python Object-Relational Mapper (ORM)-like implementation for MongoDB

Project description

MongoPyORM

MongoPyORM is a lightweight Python Object-Relational Mapper (ORM)-like implementation for MongoDB. It provides a familiar and simple interface for defining and interacting with MongoDB documents using Python classes. This library is designed to help developers manage MongoDB data in an object-oriented way, similar to how traditional ORMs work with SQL databases.

Features

  • Define document models using Python classes.
  • Built-in support for common field types such as CharField, IntegerField, FloatField, BooleanField, ListField, JSONField, UUIDField, DateField, and DateTimeField.
  • Simple CRUD operations with MongoManager.
  • Field validation with custom data types.
  • Supports relationships with embedded or referenced documents.

Installation

To install MongoPyORM, use pip:

pip install mongopyorm

Quick Start

  1. Define Your Model Create a Python class that inherits from MongoModel and define your fields:
from mongopyorm import MongoModel, CharField, IntegerField, BooleanField

class User(MongoModel):
    username = CharField(max_length=150, required=True)
    email = CharField(max_length=255)
    age = IntegerField(default=0)
    is_active = BooleanField(default=True)

    class Meta:
        collection_name = "users"
  1. Initialize the Manager Call _initialize_manager() on the model to set up the manager for database operations:
User._initialize_manager()
  1. Using the Model Create a new user
user = User(username="john_doe", email="john@example.com", age=25)
user.save()  # Save to the database

Query Users

  1. Get all users
users = User.objects.all()
  1. Filter users
active_users = User.objects.filter(is_active=True)
  1. Get a single user
john = User.objects.get(username="john_doe")
  1. Update a User
john.age = 26
john.save()  # Updates the existing document
  1. Delete a User
john.delete()

Field Types

The following field types are supported:

CharField: For storing strings with optional max_length.
IntegerField: For storing integers.
FloatField: For storing floating-point numbers.
BooleanField: For storing boolean values.
ListField: For storing lists.
JSONField: For storing JSON-compatible data (list or dict).
UUIDField: For storing UUID values.
DateField: For storing dates.
DateTimeField: For storing datetime values.
Customization

Each field has the following optional attributes:

required: Whether the field is mandatory.
default: A default value for the field if none is provided.
blank: Whether the field can be left blank.\

Configuration

MongoPyORM uses MongoDB credentials (e.g., username, password, database name, and cluster name) for establishing the connection. You can configure your credentials by creating a MongoDBConfig class, as demonstrated below:

from mongopyorm import MongoDBConfig

# Set up MongoDB credentials globally
config = MongoDBConfig()
config.set_config(db_name="your_db", username="your_username", password="your_password", cluster_name="your_cluster")

# Now you can use MongoPyORM models with these credentials

Once credentials are configured, models will automatically use the provided settings for MongoDB interactions.

Contributing

Contributions are welcome! Please follow the standard GitHub workflow (fork, feature branch, pull request workflow):

  • Fork the repository.
  • Create a feature branch (git checkout -b feature/your-feature).
  • Commit your changes (git commit -m 'Add your feature').
  • Push to the branch (git push origin feature/your-feature).
  • Open a pull request.

License

This project is licensed under the MIT License.

Future Enhancements

Support for relationship fields (e.g., ForeignKey-like references). Query optimizations for large datasets. More advanced data validation. Issues

If you encounter any bugs or issues, feel free to open an issue on GitHub.

Acknowledgments

This project was inspired by the simplicity of traditional ORMs and the power of MongoDB, aiming to bring them together seamlessly.

Contact

For any inquiries or support, please contact [brannstrom9911@gmail.com].

Feel free to modify this README.md to better fit the specific goals or features you want to highlight for your package!

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

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

MongoPyORM-0.0.7-py3-none-any.whl (5.5 kB view details)

Uploaded Python 3

File details

Details for the file MongoPyORM-0.0.7-py3-none-any.whl.

File metadata

  • Download URL: MongoPyORM-0.0.7-py3-none-any.whl
  • Upload date:
  • Size: 5.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.4

File hashes

Hashes for MongoPyORM-0.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 5767d1a64efc31dbf558c605525f5d917bef7e837fc3301c3491e4038010826c
MD5 203ce219a60e203810b715ae6f97be90
BLAKE2b-256 846014ccd5836d340e51093540b07c9c7e7ac88bbb7d3f8e2dfd03b456d78184

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