ORM for DynamoDB
Project description
DynamoDB object mapper for python 3.4+
Installation
pip install bloop
Usage
Define some models:
import arrow import uuid from bloop import (Engine, Column, Integer, DateTime, UUID, GlobalSecondaryIndex, String) engine = Engine() class Account(engine.model): class Meta: read_units = 5 write_units = 2 id = Column(UUID, hash_key=True) name = Column(String) email = Column(String) by_email = GlobalSecondaryIndex( hash_key='email', projection='keys_only', write_units=1, read_units=5) class Tweet(engine.model): class Meta: write_units = 10 account = Column(UUID, hash_key=True) id = Column(String, range_key=True) content = Column(String) date = Column(DateTime) favorites = Column(Integer) by_date = GlobalSecondaryIndex( hash_key='date', projection='keys_only') engine.bind()
Create an instance:
account = Account(id=uuid.uuid4(), name='@garybernhardt', email='foo@bar.com') tweet = Tweet( account=account.id, id='600783770925420546', date=arrow.now(), content=( 'Consulting service: you bring your big data problems' ' to me, I say "your data set fits in RAM", you pay me' ' $10,000 for saving you $500,000.')) engine.save([account, tweet])
Query or scan by column values:
email = 'foo@bar.com' yesterday = arrow.now().replace(days=-1) account = engine.query(Account.by_email)\ .key(Account.email == email).first() tweets = engine.query(Tweet)\ .key(Tweet.account == account.id) for tweet in tweets.filter(Tweet.date >= yesterday): print(tweet.content)
Versioning
bloop follows semver for its public API.
You should not rely on the internal api staying the same between minor versions.
Over time, private apis may be raised to become public. The reverse will never occur.
Contributing
Contributions welcome! Please make sure tox passes (including flake8) before submitting a PR.
Development
bloop uses tox, pytest, coverage, and flake8. To get everything set up with pyenv:
# RECOMMENDED: create a virtualenv with: # pyenv virtualenv 3.4.3 bloop git clone https://github.com/numberoverzero/bloop.git pip install tox tox
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
bloop-0.9.1.tar.gz
(25.5 kB
view hashes)