https://github.com/belda/odim
Simple Python ORM/ODM specifically designed to be used with Pydantic and FastAPI
https://github.com/belda/odim
Last synced: 6 months ago
JSON representation
Simple Python ORM/ODM specifically designed to be used with Pydantic and FastAPI
- Host: GitHub
- URL: https://github.com/belda/odim
- Owner: belda
- License: mit
- Created: 2021-01-25T15:16:14.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2022-07-08T17:28:16.000Z (almost 4 years ago)
- Last Synced: 2025-09-25T13:36:07.368Z (9 months ago)
- Language: Python
- Size: 61.5 KB
- Stars: 6
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# odim
Simple Python ORM/ODM specifically designed to be used with Pydantic and FastAPI
## Simple syntax
In order to nicely work with databases you just create your Pydantic models. Odim does not care if it is
MongoDB or SQL.
```python3
from pydantic import BaseModel
class MyModel(BaseModel):
id : int
field : str
class Config:
db_uri = "mongodb://user:pwd@10.0.0.1/db1"
collection_name = "mymodel"
```
Then you can easily perform CRUD operations.
```python3
obj = MyModel(id=1, field="asdf 213")
await Odim(obj).save()
obj2 = await Odim(MyModel).get(123)
for x in await Odim(MyModel).find({"field" : "asdf 213"}):
print(x)
await Odim(MyModel).count({"field" : 1})
```
In case you are using amazin FastAPI. We have our extended router, that gives you CRUD API endpoint
```python3
from odim.router import OdimRouter
router = OdimRouter()
router.mount_crud("/api/mymodel/", model=MyModel, tags=["mymodel"])
```
Or you can generate these API stubs with
```python3
router.generate("/api/mymodel/", model=MyModel, tags=["mymodel"])
```