ultraminimalistic Python library for simple object-document mappint for asyncronous mongodb
Project description
uodm: Ultraminimalistic Object-Document Mapper for async mongodb
Welcome to uodm
, the fun-sized, feature-packed async MongoDB Object-Document Mapper that will have your documents dancing around faster than you can say "NoSQL nirvana"! 🕺💾
Features
- 🐍 Pythonic to the core: Designed with the grace and grit of modern Python.
- 📚 Asynchronous bliss: Leveraging
asyncio
for non-blocking database adventures. - 🎳 Simple and expressive models: Define your models and let uodm handle the rest.
- 🛠️ Auto-index management: Because you've got better things to do than managing indexes manually.
- 🌍 Global database access: Connect once, use everywhere (kinda like your Netflix subscription but for databases).
Quick Start
Here's how you can jump into the action:
import uodm
class Books(uodm.Collection):
title: str
author: str
year: int = uodm.Field(default=2021)
__collection__ = "mybooks"
__indexes__ = [
uodm.Idx("title", unique=True),
uodm.Idx(["title", "author"], sparse=True),
]
async def main():
db = uodm.UODM("mongodb://localhost:27017/test")
await db.setup()
w = Books(title="War and Peace", author="Tolstoy", year=1869)
try:
await w.save()
except uodm.DuplicateKeyError as e:
print("this book is already exists")
res = await Books.get(title="War and Peace")
print(res)
for book in await Books.find(year={"$gt": 1900}):
print(book)
if __name__ == "__main__":
import asyncio
asyncio.run(main())
Installation
Grab the latest release with a simple pip command:
pip install git+https://github.com/bobuk/uodm.git#egg=uodm
or just pip install uodm
if you're ok to use the latest release.
Don't forget to wear your seatbelt, this thing is fast! 🚗💨
Contributing
Pull requests? Issues? Existential queries about your database? All are welcome!
- Fork it (like stealing your neighbor's wifi but legal).
- Create your feature branch (git checkout -b my-new-feature).
- Commit your changes (git commit -am 'Add some feature').
- Push to the branch (git push origin my-new-feature).
- Create a new Pull Request.
- ...
- PROFIT
License
This project is under "The Unlicense". Yes, it's really unlicensed. Like a fisherman without a fishing license. 🎣
Feel free to connect with me or just stop by to say "Hi, MongoDB!" 👋
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file uodm-0.1.7.tar.gz
.
File metadata
- Download URL: uodm-0.1.7.tar.gz
- Upload date:
- Size: 5.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: pdm/2.19.2 CPython/3.12.7 Darwin/24.0.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | dac8996ea70f57776a4ddff02c66c3420c7233be0b6313b329b4fd2780cbf666 |
|
MD5 | 1221d21569a6b4c7f388b6045c88a634 |
|
BLAKE2b-256 | 375a6708784507f623be70462a00c947abf30f765d47ef8227e0ff6589cf6302 |
File details
Details for the file uodm-0.1.7-py3-none-any.whl
.
File metadata
- Download URL: uodm-0.1.7-py3-none-any.whl
- Upload date:
- Size: 6.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: pdm/2.19.2 CPython/3.12.7 Darwin/24.0.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 14d868abb337bebef5df3108b9097ca62e781aa86f7735e1e3f881cec75d140a |
|
MD5 | 219565a03c5aad5061bc67c9b3ee0849 |
|
BLAKE2b-256 | f8c9fdf3b38526600bbc29667c00f42e88e6aa40a3aa832c59e35ebf0c0c1456 |