Skip to main content

Asynchronous Python ODM for MongoDB

Project description

Beanie

Overview

Beanie - is an Asynchronous Python object-document mapper (ODM) for MongoDB, based on Motor and Pydantic.

When using Beanie each database collection has a corresponding Document that is used to interact with that collection. In addition to retrieving data, Beanie allows you to add, update, or delete documents from the collection as well.

Beanie saves you time by removing boiler-plate code and it helps you focus on the parts of your app that actually matter.

Data and schema migrations are supported by Beanie out of the box.

Installation

PIP

pip install beanie

Poetry

poetry add beanie

Example

from typing import Optional
from pydantic import BaseModel
from beanie import Document, Indexed, init_beanie
import asyncio, motor

class Category(BaseModel):
    name: str
    description: str

class Product(Document):
    name: str                          # You can use normal types just like in pydantic
    description: Optional[str] = None
    price: Indexed(float)              # You can also specify that a field should correspond to an index
    category: Category                 # You can include pydantic models as well

# Beanie is fully asynchronous, so we will access it from an async function
async def example():
    # Beanie uses Motor under the hood 
    client = motor.motor_asyncio.AsyncIOMotorClient("mongodb://user:pass@host:27017")

    # Init beanie with the Product document class
    await init_beanie(database=client.db_name, document_models=[Product])

    chocolate = Category(name="Chocolate", description="A preparation of roasted and ground cacao seeds.")
    # Beanie documents work just like pydantic models
    tonybar = Product(name="Tony's", price=5.95, category=chocolate)
    # And can be inserted into the database
    await tonybar.insert() 
    
    # You can find documents with pythonic syntax
    product = await Product.find_one(Product.price < 10)
    
    # And update them
    await product.set({Product.name:"Gold bar"})
    
asyncio.run(example())

Links

Documentation

  • Doc - Tutorial, API docmentation, and development guidlines.

Example Projects

Articles

Resources

  • GitHub - GitHub page of the project
  • Changelog - list of all the valuable changes
  • Discord - ask your questions, share ideas or just say Hello!!

Supported by JetBrains

JetBrains

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

beanie-1.5.0.tar.gz (33.5 kB view details)

Uploaded Source

Built Distribution

beanie-1.5.0-py3-none-any.whl (51.8 kB view details)

Uploaded Python 3

File details

Details for the file beanie-1.5.0.tar.gz.

File metadata

  • Download URL: beanie-1.5.0.tar.gz
  • Upload date:
  • Size: 33.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.4 CPython/3.9.7 Linux/5.8.0-1041-azure

File hashes

Hashes for beanie-1.5.0.tar.gz
Algorithm Hash digest
SHA256 1f19f3ba5a0f85ea54ffbe0f4e36f1e62561338f78cfbc68178a78a07856973a
MD5 eb47e7183a17127ed4c3093e7f108298
BLAKE2b-256 3e32c77ca57b67c7a69c98a2bf16d98a5f7468d48baf0171ee66af2825e84ece

See more details on using hashes here.

File details

Details for the file beanie-1.5.0-py3-none-any.whl.

File metadata

  • Download URL: beanie-1.5.0-py3-none-any.whl
  • Upload date:
  • Size: 51.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.4 CPython/3.9.7 Linux/5.8.0-1041-azure

File hashes

Hashes for beanie-1.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b0fca5c1823c4c3ddeba0c5b42d910e26f779cf2e2139c762d1968e23ff71949
MD5 4c119251e94aa6300d6186faa858a471
BLAKE2b-256 e6698361e25bdfc24d783915648ec249ce0a10b3291fa205b1a9fb5624734f46

See more details on using hashes here.

Supported by

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