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 git+https://github.com/MajidRaimi/tymongo.git

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.2.tar.gz (4.9 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.2-py3-none-any.whl (6.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: tymongo-0.0.2.tar.gz
  • Upload date:
  • Size: 4.9 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.2.tar.gz
Algorithm Hash digest
SHA256 75d8d8b6b569c04f85869a4337b1e02766ec849ea5c8d53a17381b3a4edfca1f
MD5 f51a570abd22fb6175f090e62d25ee7a
BLAKE2b-256 5f0e0b49a91e3031bf06c973631481c6e7180935115cda75464956c794abb2e3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tymongo-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 6.2 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 b066461f8e87178d070d74c54b033a4800b46330c0dd21a288945d8c416761be
MD5 2b006f6a6072576c9e1c1cef26140080
BLAKE2b-256 80e3e05108420e3c1783272b51b0dae86d4d18dfdfb4069efe08a857c24c7afa

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