A thin async layer between Pydantic and MongoDB
Project description
A thin async layer between Pydantic and MongoDB.
Quick usage
from pydantic import BaseModel
from tokka import Database
from tokka import Collection
import asyncio
class User(BaseModel):
"""Sample data."""
name: str
email: str
class DB(Database):
"""A tokka.Database subclass to easily accesst the your collections."""
@property
def users(self) -> Collection:
return self.get_collection("users")
if __name__ == "__main__":
db = DB("sampleDB", connection="YOUR MONGODB URI")
user1 = User(name="John Doe", email="john.doe@tokka.com.br")
user2 = User(name="Emma Soo", email="emma.sue@tokka.com.br")
async def tasks() -> None:
insert_results = await asyncio.gather(
db.users.insert_one(user1),
db.users.find_one(user1, filter_by="name"),
)
print(insert_results)
replace_one_results = await asyncio.gather(
db.users.replace_one(user1, user2, filter_by="email"),
db.users.find_one(user2, filter_by="name"),
)
print(replace_one_results)
find_one_and_delete_results = await asyncio.gather(
db.users.find_one_and_delete(user2, filter_by="name"),
)
print(find_one_and_delete_results)
asyncio.run(tasks())
db.close()
Benchmarking
Formal benchmarks are still necessary, but initial executions showed an impact of less than <0.1s using Tokka.
License
This project is licensed under the terms of the MIT license.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
tokka-0.1.0b0.tar.gz
(5.3 kB
view hashes)