Skip to main content

SQLAlchemy-style ORM for Amazon's DynamoDB

Project description

Flywheel

Master Build:

build coverage

0.1 Build:

build-0.1 coverage-0.1

0.2 Build:

build-0.2 coverage-0.2

Documentation:

http://flywheel.readthedocs.org/

Downloads:

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

Source:

https://github.com/mathcamp/flywheel

Object mapper for Amazon’s DynamoDB

Getting Started

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

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(data_type=int)
    top_score_time = Field(data_type=datetime)
    wins = Field(data_type=int)
    losses = Field(data_type=int)

    def __init__(self, title, userid):
        self.title = title
        self.userid = userid

Create a new top score:

>>> 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:

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

Get the top score for Galaxy Invaders:

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

Atomically increment a user’s “wins” count on Alien Adventure:

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

Get all scores on Comet Quest that are over 9000:

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

Changelog

0.2.0

  • Breakage: Engine no longer accepts boto connections (using dynamo3 instead)

  • Breakage: Removing S3Type (no longer have boto as dependency)

  • Feature: Support Python 3.2 and 3.3

  • Feature: .count() terminator for queries

  • Feature: Can override throughputs in Engine.create_schema()

  • Bug fix: Engine namespace is truly isolated

0.1.3

  • Bug fix: Some queries fail when global index has no range key

0.1.2

  • Bug fix: Field names can begin with an underscore

  • Feature: Models have a nice default __init__ method

0.1.1

  • Bug fix: Can call incr_() on models that have not been saved yet

  • Bug fix: Model comparison with None

0.1.0

  • First public release

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

flywheel-0.2.0.tar.gz (25.6 kB view details)

Uploaded Source

Built Distribution

flywheel-0.2.0-py2.py3-none-any.whl (30.5 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file flywheel-0.2.0.tar.gz.

File metadata

  • Download URL: flywheel-0.2.0.tar.gz
  • Upload date:
  • Size: 25.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for flywheel-0.2.0.tar.gz
Algorithm Hash digest
SHA256 9d20ba8ecf7dfd2ceb7f78298a57ea3807dbd7b8f7746ca1679fa631cb61354e
MD5 d8353bc40c75eeae95b5b702bf1f7570
BLAKE2b-256 9f843bce5161d6c345b510f52bf00a5656a8301419f4aed495349af68e5b295f

See more details on using hashes here.

File details

Details for the file flywheel-0.2.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for flywheel-0.2.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 54db8dad90e3b36c37635658c102ad4d334d09dbe1ab9081d970b62c8e503ce2
MD5 ebcf1745f0e6ce8f76b66013c18bbbbd
BLAKE2b-256 f369373904072632e6b485e938cb31f85d523196d9eca9570d33652abaad95b4

See more details on using hashes here.

Supported by

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