Skip to main content

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!

  1. Fork it (like stealing your neighbor's wifi but legal).
  2. Create your feature branch (git checkout -b my-new-feature).
  3. Commit your changes (git commit -am 'Add some feature').
  4. Push to the branch (git push origin my-new-feature).
  5. Create a new Pull Request.
  6. ...
  7. 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

uodm-0.1.7.tar.gz (5.0 kB view details)

Uploaded Source

Built Distribution

uodm-0.1.7-py3-none-any.whl (6.0 kB view details)

Uploaded Python 3

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

Hashes for uodm-0.1.7.tar.gz
Algorithm Hash digest
SHA256 dac8996ea70f57776a4ddff02c66c3420c7233be0b6313b329b4fd2780cbf666
MD5 1221d21569a6b4c7f388b6045c88a634
BLAKE2b-256 375a6708784507f623be70462a00c947abf30f765d47ef8227e0ff6589cf6302

See more details on using hashes here.

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

Hashes for uodm-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 14d868abb337bebef5df3108b9097ca62e781aa86f7735e1e3f881cec75d140a
MD5 219565a03c5aad5061bc67c9b3ee0849
BLAKE2b-256 f8c9fdf3b38526600bbc29667c00f42e88e6aa40a3aa832c59e35ebf0c0c1456

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page