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.4.tar.gz (5.0 kB view details)

Uploaded Source

Built Distribution

uodm-0.1.4-py3-none-any.whl (5.7 kB view details)

Uploaded Python 3

File details

Details for the file uodm-0.1.4.tar.gz.

File metadata

  • Download URL: uodm-0.1.4.tar.gz
  • Upload date:
  • Size: 5.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: pdm/2.15.0 CPython/3.12.3 Darwin/23.4.0

File hashes

Hashes for uodm-0.1.4.tar.gz
Algorithm Hash digest
SHA256 c3ad5a3d5909853fc972b6a421d98861d3a3e57cb53b6f608650d1c2c97486c2
MD5 d0da2e6323ffe793af13c7c7aa575cad
BLAKE2b-256 a97550f830ed75c93207a2442f8c15bcc24d63661675485320bb74d9363a67b9

See more details on using hashes here.

File details

Details for the file uodm-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: uodm-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 5.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: pdm/2.15.0 CPython/3.12.3 Darwin/23.4.0

File hashes

Hashes for uodm-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 742a091ba664fa209ba332cff5b84c41556d49ba9286924acc87e744f3b57572
MD5 24087d29342931b7064c9d618d5aee7a
BLAKE2b-256 57697bc55c31c425a065b3a33096089d5d7715213b41dce3195b05dc8c7d7f4c

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