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, andDateTimeField. - 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
- 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"
- Initialize the Manager
Call
_initialize_manager()on the model to set up the manager for database operations:
User._initialize_manager()
- 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
- Get all users
users = User.objects.all()
- Filter users
active_users = User.objects.filter(is_active=True)
- Get a single user
john = User.objects.get(username="john_doe")
- Update a User
john.age = 26
john.save() # Updates the existing document
- 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file MongoPyORM-0.0.3-py3-none-any.whl.
File metadata
- Download URL: MongoPyORM-0.0.3-py3-none-any.whl
- Upload date:
- Size: 3.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
885b5d2cb707f1615bf01207cd96590e18e1cc1a18c596b71e6e7e10cea53504
|
|
| MD5 |
eedb470b42c9b84d200adfec6666779d
|
|
| BLAKE2b-256 |
0fedb2584bb4ffa93e026b408b49bc01e605694fd7f28d7c7be3db263a11a9b7
|