amazon dynamodb的对象映射器

dynamodb-mapper的Python项目详细描述


dynamodb映射器–基于boto的dynamodb对象映射器。

演示文稿

DynamoDB是一个极简的nosql引擎 亚马逊作为其AWS产品的一部分提供。

dynamodb允许您存储由unicode字符串或数字组成的文档 以及一组Unicode字符串和数字。每个表必须定义一个散列 键,可以定义范围键。所有其他字段都是可选的。

dynamodb映射器在dynamodb上引入一个小的抽象层来克服一些 没有任何性能妥协的限制。它的灵感来自 成熟的MoongoKit project

要求

  • Boto = 2.6.0
  • AWS account

亮点

  • python<;–>;dynamodb类型映射
  • 使用Onctuous(1.8.0中的新功能)进行深层模式定义和验证
  • 多目标事务(1.6.0中的新功能)
  • 子交易(1.6.2新增)
  • 迁移引擎(1.7.0中的新功能)
  • 智能冲突检测(1.7.0中的新功能)
  • scanqueryget_batch
  • 默认值
  • 自动增量哈希键
  • 框架不可知

示例用法

我们假设您已经正确设置了boto凭据或使用了ddbmock

快速安装

$ pip install dynamodb-mapper

如果您还没有配置boto,您可以简单地

$ export AWS_ACCESS_KEY_ID=<your id key here>
$ export AWS_SECRET_ACCESS_KEY=<your secret key here>

第一种型号

from dynamodb_mapper.model import DynamoDBModel


class DoomMap(DynamoDBModel):
    __table__ = u"doom_map"
    __hash_key__ = u"episode"
    __range_key__ = u"map"
    __schema__ = {
        u"episode": int,
        u"map": int,
        u"name": unicode,
        u"cheats": set,
    }
    __defaults__ = {
        "cheats": set([u"Konami"]),
    }

初始表创建

from dynamodb_mapper.model import ConnectionBorg

conn = ConnectionBorg()
conn.create_table(DoomMap, 10, 10, wait_for_active=True)

模型使用

e1m1 = DoomMap()
e1m1.episode = 1
e1m1.map = 1
e1m1.name = u"Hangar"
e1m1.cheats = set([u"idkfa", u"iddqd", u"idclip"])
e1m1.save()


# Later on, retrieve that same object from the DB...
e1m1 = DoomMap.get(1, 1)

# query all maps of episode 1
e1_maps = DoomMap.query(hash_key=1)

# query all maps of episode 1 with 'map' hash_key > 5
from boto.dynamodb.condition import GT
e1_maps_after_5 = DoomMap.query(
    hash_key=1,
    range_key_condition=GT(5))

贡献

想要贡献,报告一个但是请求一个功能?发展还在继续 在Ludia的Bitbucket帐户:

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
带Maven的Eclipse Java存储库:缺少工件:compile   java如何以编程方式停止RMI服务器并通知所有客户端   java Roboguice抛出ClassNotFoundException:AnnotationDatabaseImpl   java为什么lucene 4.0删除IndexWriter类的两个构造函数?   nls如何避免java项目上不需要的日志消息?   测试无法在Selenium Webdriver(java)中定位iframe   使用XML的java servlet   java如何使用jxl用****屏蔽单元格   java使用SQLite从数据库中选择“没有这样的列”   导入扫描程序后出现java编译错误   插入查询的java空指针异常   使用创建PostgreSQL数据库。Java应用中的sql脚本   java使用jsoup将HTML解析为格式化的明文