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

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: 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.0rc2.tar.gz (25.4 kB view details)

Uploaded Source

Built Distribution

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

Uploaded Python 2 Python 3

File details

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

File metadata

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

File hashes

Hashes for flywheel-0.2.0rc2.tar.gz
Algorithm Hash digest
SHA256 597276b7acf6284f5cfad4123d402f894259320da2b7b6046e4aa5700ada4cfa
MD5 90a8a62ec563a927f79d5a0199b8c076
BLAKE2b-256 6027c8700d09ea9a7c160efa309759ab924eab74b68fb37edceeae6b599930fd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flywheel-0.2.0rc2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 ca7f1f6e6554a38f40890c306158cd3697bcc3a3c439e268649faee9508a1ee5
MD5 cf40bcbbdaa25854ef2f6f66777afc57
BLAKE2b-256 a7efd18a09335323e6ace1f10cd05e70978ef6f78adeb011ab75b0634161634d

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