https://github.com/mauro-andre/pyodmongo
A Python ODM for MongoDB
https://github.com/mauro-andre/pyodmongo
async asyncio database fastapi mongo mongo-aggregation mongodb mongodb-aggregation nosql pydantic pydantic-v2 python schema
Last synced: about 1 month ago
JSON representation
A Python ODM for MongoDB
- Host: GitHub
- URL: https://github.com/mauro-andre/pyodmongo
- Owner: mauro-andre
- License: mit
- Created: 2023-03-14T15:10:48.000Z (about 2 years ago)
- Default Branch: master
- Last Pushed: 2025-03-27T14:30:55.000Z (about 2 months ago)
- Last Synced: 2025-03-31T05:04:43.604Z (about 2 months ago)
- Topics: async, asyncio, database, fastapi, mongo, mongo-aggregation, mongodb, mongodb-aggregation, nosql, pydantic, pydantic-v2, python, schema
- Language: Python
- Homepage:
- Size: 1.22 MB
- Stars: 43
- Watchers: 1
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Code of conduct: code_of_conduct.md
Awesome Lists containing this project
README
---
**Documentation**: https://pyodmongo.dev
**Source Code**: https://github.com/mauro-andre/pyodmongo
---
**PyODMongo** is a modern Python library that functions as a robust Object-Document Mapper (ODM) for **MongoDB**. Leveraging the power of **Pydantic V2**, it seamlessly bridges the gap between Python and MongoDB, offering an intuitive and efficient way to interact with MongoDB documents.
By using **PyODMongo**, you can effortlessly map your Python classes to MongoDB documents, allowing for a more Pythonic approach to handling data. This library simplifies the entire process of defining and working with MongoDB collections, documents, and queries.
**PyODMongo** is built on top of **Pydantic V2**, making the `DbModel` class an extension of Pydantic's `BaseModel`. This means that all the rich functionality of Pydantic's `BaseModel`, including **Validators**, **Fields** and **Model Config**, is readily available in `DbModel`.
## Key Features
- **Integration with pydantic**: Leverage the power of pydantic's data validation and modeling capabilities while working with MongoDB data.
- **Automatic Schema Generation**: Define your MongoDB schema using pydantic models, and `pyodmongo` will automatically create the necessary MongoDB collections and ensure data consistency.
- **Query Builder**: Easily construct complex MongoDB queries using Python code, reducing the need for writing raw query strings.
- **Document Serialization**: Serialize and deserialize Python objects to and from MongoDB documents effortlessly.
- **Async Support**: Take advantage of asynchronous programming with `pyodmongo` to enhance the performance of your MongoDB operations.
- **Active Development**: `pyodmongo` is actively developed and maintained, with new features and improvements being regularly added.
## Installation
You can install `pyodmongo` using pip:
```bash
pip install pyodmongo
```## Contributing
Contributions to `pyodmongo` are welcome! If you find any issues or have ideas for improvements, please open an issue or submit a pull request on the [GitHub repository](https://github.com/mauro-andre/pyodmongo).
## License
`pyodmongo` is licensed under the MIT License. See the [LICENSE file](https://github.com/mauro-andre/pyodmongo/blob/master/LICENSE) for more information.## Async exemple
```python hl_lines="5"
from pyodmongo import AsyncDbEngine, DbModel
from typing import ClassVar
import asyncioengine = AsyncDbEngine(mongo_uri='mongodb://localhost:27017', db_name='my_db')
class Product(DbModel):
name: str
price: float
is_available: bool
_collection: ClassVar = 'products'box = Product(name='Box', price='5.99', is_available=True)
async def main():
result = await engine.save(box)asyncio.run(main())
```## Sync exemple
```python hl_lines="4"
from pyodmongo import DbEngine, DbModel
from typing import ClassVarengine = DbEngine(mongo_uri='mongodb://localhost:27017', db_name='my_db')
class Product(DbModel):
name: str
price: float
is_available: bool
_collection: ClassVar = 'products'box = Product(name='Box', price='5.99', is_available=True)
result = engine.save(box)
```