Skip to content
This repository has been archived by the owner on Aug 27, 2023. It is now read-only.

stevearc/flywheel

Repository files navigation

Flywheel

Build

build_ coverage_

Documentation

http://flywheel.readthedocs.org/

Downloads

http://pypi.python.org/pypi/flywheel

Source

https://github.com/stevearc/flywheel

Object mapper for Amazon's DynamoDB

END OF LIFE WARNING: I haven't personally used this project, or even written much python, since early 2014. I will continue to respond to bugs and pull requests, but I am no longer doing active development. My apologies to those of you who have come to rely on Flywheel; I wish I had the time to continue it. If there is anyone in the community interested in becoming the new maintainer and continuing to move development forward, send me an email and we can discuss.

If you are looking for an alternative, I can recommend PynamoDB.

Getting Started

This is what a basic model looks like (schema taken from this DynamoDB API documentation)

python

from flywheel import Model, Field, GlobalIndex

class GameScore(Model):
__metadata__ = {
'global_indexes': [

GlobalIndex('GameTitleIndex', 'title', 'top_score')

],

} userid = Field(hash_key=True) title = Field(range_key=True) top_score = Field(type=int) top_score_time = Field(type=datetime) wins = Field(type=int) losses = Field(type=int)

def __init__(self, title, userid):

self.title = title self.userid = userid

Create a new top score

python

>>> score = GameScore('Master Blaster', 'abc') >>> score.top_score = 9001 >>> score.top_score_time = datetime.utcnow() >>> engine.sync(score)

Get all top scores for a user

python

>>> scores = engine.query(GameScore).filter(userid='abc').all()

Get the top score for Galaxy Invaders

python

>>> top_score = engine.query(GameScore).filter(title='Galaxy Invaders')... .first(desc=True)

Atomically increment a user's "wins" count on Alien Adventure

python

>>> score = GameScore('Alien Adventure', 'abc') >>> score.incr(wins=1) >>> engine.sync(score)

Get all scores on Comet Quest that are over 9000

python

>>> scores = engine.query(GameScore).filter(GameScore.top_score > 9000, ... title='Comet Quest').all()