Skip to main content

A simple MongoDB ORM that support types

Project description

TyMongo 🐍📦

TyMongo is a Python package designed to simplify your interaction with MongoDB by leveraging the power of pymongo for database connectivity and pydantic for efficient modeling and type creation through classes.

Features

  • Seamless connection to MongoDB using pymongo. 🌐
  • Data modeling and type creation with pydantic classes. 🧱
  • Automatic data validation and type conversion. ✅
  • Automatic data serialization and deserialization. 📦

Installation 📥

To install TyMongo, simply use pip: (for now, only from github)

pip install tymongo

Setup 🛠️

All you really need to do is to create .env file in your project root directory and add the following variables:

DATABASE_URL=your_database_url
DATABASE_NAME=your_database_name

And now you're ready to go! 🚀

Usage 📝

Creating a Model

To create a model, simply inherit from TyMongoModel and define your fields:

class User(TyMongoModel):
    name: str
    age: int

    class Config:
        collection = "users"
  • Will work 100% like BaseModel from pydantic, but with some extra features. 🤩
  • Make sure you define inner class Config and set collection to the name of the collection you want to use in your database. 📁
  • You don't have to define _id field, it will be automatically created for you. 🆔

Creating a User

user = User(name="Majid", age=21)
# or
user_dict = {"name": "Majid", "age": 21}
user = User(**user_dict)
  • You can pass any value to any field, it will be automatically converted to the type you defined. 🔄
  • You can also pass a dictionary to the model, it will be automatically converted to the model. 🔄

Saving a User

user.save()

Now you have a new user in your database! 🎉

Editing a User

user.age = 22
user.save()

Now your user's age is 22 in your database! 🎉

Deleting a User

user.delete()

Now your user is deleted from your database! 🎉

Extra Features 🤩

Querying & Fields Validation

query = {"age": 22}
users = User.find(query)

Just like pymongo, you can pass a query to find method and it will return a list of all the users that match the query as a list of models, just make sure the dictionary keys match the model fields. 🔑

query = {
    'x': 'some value',
    'age': 21,
}
users = User.find(query)

This will raise an error because x is not a field in the model. ❌

Get a Single Document by ID

user = User.get("xxxxxxxxxxxxxxxxxxxxxxxx")

Get a Single Document by Query

q = {
    'name' : 'Majid'
}
user = User.find_one(q)

What if I want to use pymongo directly? 🤔

You can access the collection object directly from the model:

collection = User.__collection__()
users = collection.find({"age": 22})

License

TyMongo is licensed under the terms of the MIT License.

Contributing 🤝

Contact 📧

Acknowledgements 🙏

Thank you for using TyMongo! 🙌 happy coding! 🚀

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

tymongo-0.0.4.tar.gz (5.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tymongo-0.0.4-py3-none-any.whl (6.1 kB view details)

Uploaded Python 3

File details

Details for the file tymongo-0.0.4.tar.gz.

File metadata

  • Download URL: tymongo-0.0.4.tar.gz
  • Upload date:
  • Size: 5.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.0

File hashes

Hashes for tymongo-0.0.4.tar.gz
Algorithm Hash digest
SHA256 db9532e362c941cbc7ebef29cbb493309d135e83071f3d14dc7a340a94ead28f
MD5 4edc22f3d85135d1d87f76f4ff9f8d52
BLAKE2b-256 51d085dfdd3009fff6208b3a7b5fcf14c6d3ea6b40746f8111c2f597b3c14868

See more details on using hashes here.

File details

Details for the file tymongo-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: tymongo-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 6.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.0

File hashes

Hashes for tymongo-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 e8e412462e4b5c0e28169cc3133719a4fe6c011727f67982a6f4a9552ced9971
MD5 3ff15948c1a63957309ffd23371a2057
BLAKE2b-256 e651567532575e2ea024d15c3b7e977257c28d62cade2198d104cfea2bc672c8

See more details on using hashes here.

Supported by

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