如何仅使用 boto 2.25.0 通过全局二级索引查询 DynamoDB2 表?

2024-02-05

这是我从常规 DynamoDB 表切换到具有全局二级索引的 DynamoDB2 表的延续**。

所以我创建了如图所示的表格here https://stackoverflow.com/questions/21736813/getting-attributeerror-when-trying-to-create-dynamodb-table-with-global-index-us然后添加以下两个元素:

table.put_item(data={'firstKey': 'key01', 'message': '{"firstKey":"key01", "comments": "mess 1 w/o secondKey"}'})
table.put_item(data={'firstKey': 'key02', 'secondKey':'skey01', 'message': '{"firstKey":"key02", "parentId":"skey01", "comments": "mess 2 w/ secondKey"}'})

我现在想做的是通过(i)唯一的来检索项目firstKey价值观或 (ii) 独特secondKey价值观。第一个很简单:

res1 = table.get_item(firstKey='key01')
res1['message']

我不知道如何做第二个。这不起作用:

res2 = table.get_item(secondKey='skey01')

生产The provided key element does not match the schema。好的,这是预期的。当我这样做时:

res2 = table.query(secondKey='skey01',index='secondKeyIndex')

I get You must specify more than one key to filter on.

那么我该如何让它发挥作用呢?请注意,当我的值为secondKey一个项目,我不知道它对应的firstKey.

===== 更新:这是我尝试过的其他一些事情:

This

res2 = table.query(secondKey__eq='skey01',index='secondKeyIndex')

produced

boto.dynamodb2.exceptions.QueryError: You must specify more than one key to filter on.

在下面的块中,query语句没有产生任何错误

res2 = table.query(secondKey='skey01',secondKey__eq='skey01',index='secondKeyIndex')
for r in res2:
    print res2['secondKey']

but the print gave me

boto.dynamodb2.exceptions.UnknownFilterTypeError: Operator 'secondKey' from 'secondKey' is not recognized.

可以使用LSI/GSI。

请参阅此处的 boto 教程(搜索 LSI,您将获得示例)。 DynamoDB2 — boto v2.25.0 :http://boto.readthedocs.org/en/latest/ref/dynamodb2.html http://boto.readthedocs.org/en/latest/ref/dynamodb2.html

添加完整的工作示例(尝试使用 dynamo local:http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tools.DynamoDBLocal.html http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tools.DynamoDBLocal.html)

conn = DynamoDBConnection(
    host='localhost',
    port=8000,
    aws_access_key_id='DEVDB', #anything will do
    aws_secret_access_key='DEVDB', #anything will do
    is_secure=False)
tables = conn.list_tables()
print "Before Creation:", tables

table_name = 'myTable'
if table_name not in tables['TableNames']:
    Table.create(table_name
        , schema=[HashKey('firstKey')]
        , throughput={'read': 5, 'write': 2}
        , global_indexes=[
            GlobalAllIndex('secondKeyIndex', parts=[HashKey('secondKey')], throughput={'read': 5, 'write': 3})]
        , connection=conn
    )
    #print_table_details(conn, table_name)
table = Table(table_name, connection=conn)
item = Item(table, data={
    'firstKey': str(uuid.uuid4()),
    'secondKey': 'DUMMY-second'
})
item.save()
results = table.query(secondKey__eq='DUMMY-second', index='secondKeyIndex')
for res in results:
    print res['firstKey'], res['secondKey']

执行结果为:

91d4d056-1da3-42c6-801e-5b8e9c42a93f DUMMY-second
15c17b09-4975-419a-b603-427e4c765f03 DUMMY-second
dd947b7d-935e-458f-84d3-ed6cd4f32f5a DUMMY-second

还添加确切的包(由于 Dynamo1/2 - 有可能出错):

from boto.dynamodb2.fields import HashKey, RangeKey, GlobalAllIndex
from boto.dynamodb2.layer1 import DynamoDBConnection
from boto.dynamodb2.table import Table
from boto.dynamodb2.items import Item
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何仅使用 boto 2.25.0 通过全局二级索引查询 DynamoDB2 表? 的相关文章

  • 重建数据库中的所有索引

    我有一个非常大的 SQL Server 2008 R2 数据库 1 5TB 并将在同一个表中的列之间复制一些数据 我被告知该架构有大量索引 并且想知道是否有默认查询或脚本可以重建所有索引 是否也被建议同时更新统计数据 30 个表中的每一个都
  • 我需要在Django+Gunicorn+GEvent+Boto结构中调用monkey.patch_all()吗?

    我的网站使用的是 Django Gunicorn GEvent 我必须使用 Boto for DynamoDB 的一个功能 我需要调用monkey patch all 来使Boto变成greenlet吗 如果您使用默认的工人阶级配置 那么你
  • 如何使用 ggplot2 将 IPCC 点画添加到全球地图

    我需要将 IPCC style 点画添加到全球地图中 如下所示这个帖子 https stackoverflow com questions 11736996 adding stippling to image contour plot 不过
  • 如何使用文档客户端更新 dynamodb 中的嵌套列表数据

    我有一个 dynamoDB 表 其中有一个包含 UserId 和列表列表的项目 它看起来像这样 Item UserId abc123 Lists id 1 title My favorite movies topMovies id 1 ti
  • 如何在 Eclipse CDT 中查看静态或全局变量?

    我一直试图弄清楚如何在 CDT 的 eclipse 变量窗口中显示静态变量 但不知道如何 CDT 的菜单按钮似乎没有 java gt globals 菜单 如何在 Eclipse CDT 调试器中显示静态 全局变量 Window gt Sh
  • 八度全局变量

    global m 1 function p h m end h 我正在尝试运行此脚本 但出现此错误 m 在第 4 行第 3 列附近未定义 请告诉我 如何使用函数中的变量 您必须在函数内将 var 声明为全局变量 如下所述 https www
  • AWS DynamoDb DocumentClient - 从项目数组创建批量写入 - node.js

    我正在尝试执行batchWrite使用 DynamoDB 的操作DocumentClient来自项目数组 JSON 这是我的代码 var items for i 0 i lt orders length i var ord orders i
  • 创建索引可以使用现有索引吗?

    我在 A B 和 C 列上有单独的索引 我想在 A B C 三列上创建一个复合索引 我的会有什么影响existing指数对综合指数creation 数据库会利用它们吗 它们是否无关紧要 或者它们会减慢我的新复合索引的创建速度吗 我正在使用
  • java中的高亮文本

    我们正在开发抄袭检测框架 在那里我必须强调文档中可能抄袭的短语 首先对文档进行预处理 包括停用词删除 词干提取和数字删除 因此 预处理标记的突出显示变得困难 作为和示例 原文 极限编程是敏捷软件开发的一种方法 它强调在短开发周期 称为时间盒
  • Spring Data - MongoDB 索引 DBRef

    我正在使用 spring data mongodb 1 2 0 RELEASE 我有两个类 A 和 B 其中 B 引用了 A 并且用 DBRef 进行了注释 Class A Document collection a public clas
  • 如何为 pg_trgm `'term' % ANY (array_column)` 查询索引字符串数组列?

    我尝试过普通的Postgresgin索引以及 pg trgmgin trgm ops and gist trgm ops索引 使用此解决方法 https stackoverflow com a 33016333 283398 https s
  • 是否可以更新 amazon dynamodb 中的哈希键?

    我想更新 amazon dynamodb 表中的哈希键值 我在同一张表中也有一个范围键 是否有可能做到这一点 您无法更新哈希键值 您必须删除并重新创建该项目 这是相关的aws文档http docs aws amazon com amazon
  • DynamoDB 冲突解决策略

    DynamoDB 的冲突解决策略是什么 Dynamo 的白皮书谈到了通过 GetItem 返回多个版本以供客户端解析 This SO 问题 https stackoverflow com questions 41933959 how do
  • 索引匹配不起作用

    对于下表 如果 A 列和 B 列都匹配 如何检索 C 列A 列 B 列 C 列城市 1 城市 10 本地城市 2 城市 21 远程城市 3 城市 1 远程城市 4 城市 2 本地 我尝试使用索引和匹配 但得到 N A Enter as an
  • 为 MongoDB 中的对象数组建立索引

    我有一个巨大的电子邮件转储 我正在尝试在 MongoDB 中存储和查询它 有 160 万封电子邮件 每封电子邮件都存储为节点模块 https github com andris9 mailparser它将原始电子邮件解析为漂亮的 Javas
  • 如何在 MariaDB 10 中启用大索引?

    在 Debian Jessie 中 我安装了 MariaDB 服务器 10 0 30 并尝试增加最大密钥长度 AFAIU 这取决于配置参数innodb large prefix正在启用 根据docs https mariadb com kb
  • 为什么 Mongohint 可以使查询运行速度提高 10 倍?

    如果我使用explain 从shell运行mongo查询 获取所使用的索引的名称 然后再次运行相同的查询 但使用hint 指定要使用的相同索引 解释计划中的 millis 字段是显着下降 例如 没有提供任何提示 gt gt db event
  • Django - 获取 PIL 图像保存方法以与 Amazon s3boto 存储一起使用

    为了在上传时调整图像大小 使用 PIL 我重写了文章模型的保存方法 如下所示 def save self super Article self save if self image size 160 160 image Image open
  • SQL Server 为什么索引不与 OR 一起使用

    我一直在研究索引并试图了解它们是如何工作的以及如何使用它们来提高性能 但我错过了一些东西 我有下表 Person Id Name Email Phone 1 John E1 P1 2 Max E2 P2 我正在尝试找到对列进行索引的最佳方法
  • 是否可以使用 AWS AppSync 构建离线优先的移动应用程序?

    我想使用 AWS AppSync 进行移动开发 Android iOS 但我不确定其离线功能 根据文档 数据将在离线时访问 并在客户端再次上线时自动同步 但我找不到任何有关应用程序客户端在使用 AppSync 创建和修改离线数据之前是否需要

随机推荐

  • 如何迭代通用函数中传递的切片并集? (T无芯型)

    我正在 go 1 18 中测试泛型并查看了这个example https go dev doc tutorial generics declare type constraint 我想重新创建该示例 但能够传入 int 切片或 float
  • 未为目标“###”提供服务证书 在 ClientCredentials 中指定服务证书

    我已经实现了一个测试客户端 服务器 它实现了UserName通过 WCF 进行消息身份验证 它almost一切顺利 但我在最后一个障碍处摔倒了 我得到一个InvalidOperationException上面写着 未为目标 http loc
  • 使用数组和List<>哪个更好? [复制]

    这个问题在这里已经有答案了 我想知道哪种类型的性能更好以及您认为应该使用哪种类型 例如 我有一个字符串列表 不知道我需要多少个项目 因此使用 Add String 函数非常方便 我可以随时轻松地将新字符串添加到列表中 使用每种方法的优点 缺
  • WiX 安装程序 msi 未安装使用 Visual Studio 2017 创建的 Winform 应用程序

    为了进行简单的测试 我创建了一个Wix简单 Winform 应用程序的安装程序应用程序如下 但是当我运行msi使用安装程序创建 它运行仅一秒钟 然后退出而不安装 Winform 应用程序 Question 这可能是什么问题 我的身上似乎缺少
  • 未指定的隐式对象创建

    Since P0593 为低级对象操作隐式创建对象 https github com cplusplus papers issues 106已被接受 现在可以创建对象隐含地在 C 20 中 具体来说 该提案引入的措辞允许某些操作 例如std
  • SchemaSpy PostgreSQL - 警告 - 连接失败

    我尝试使用 SchemaSpy 连接到我的 PostgresSQL 服务器 我安装了 Java 使用oracle java8 installer from ppa webupd8team java 我的 PostgreSQL 服务器在 Do
  • 捕获 WebService 抛出的 SoapException

    我写了以下服务 namespace WebService1 WebService Namespace http tempuri org WebServiceBinding ConformsTo WsiProfiles BasicProfil
  • Umbraco - 通过 URL 选择节点

    当我尝试通过 URL 访问节点时 我遇到了 Umbraco 问题 我一直在尝试形成一个 xpath 查询来选择 url 但我不知道该怎么做 而且他们的 API 中的所有内容都是 动态的 所以我发现不可能更深入地挖掘其他内容方法 Umbrac
  • 将大视频从 iPhone 上传到网络服务器

    我正在尝试将一个大视频从 iphone 上传到具有 php 脚本的网络服务器 我在用着NSInputStream获取文件视频块 我在每次遍历时创建一个请求 POST void stream NSStream stream handleEve
  • Git Pull 与 Git Rebase

    我是 Git 新手 正在尝试了解两者之间的区别git pull vs git rebase 有人可以提供一个例子 何时使用哪个选项 因为我觉得两者都有相同的目的 git pull and git rebase不可互换 但它们是紧密相连的 g
  • 以编程方式将优惠券应用于 WooCommerce3 中的订单

    我正在开发一个插件 可以直接创建订单 无购物车 并应用优惠券 在 woo API 3 0 版本中 该函数add coupon 已被弃用 取而代之的是WC Order Item Coupon您添加到订单中的对象 创建优惠券 coupon ne
  • Grafana“Node Exporter Full”仪表板在导入后不显示任何数据

    我正在尝试从这里导入节点导出器完整仪表板 https grafana com grafana dashboards 1860 https grafana com grafana dashboards 1860 但是当我导入仪表板时 它什么也
  • 如何以编程方式获取 mac os x macbook 的电池寿命?

    我想做的是记录电池百分比 我知道linux中的等效项是sysctl hw acpi battery life 然而 当我在 mac os x 中查看 sysctl 的 man 时 我没有找到等效的代码来找到它 有人可以指出如何使用 Obje
  • 从 Python 中的类调用函数时参数数量错误

    我正在尝试用 python 编写遗传算法的实现 它说 当只允许一个参数时 我会用两个参数来调用它 但我确信我不允许 这是相关代码 class GA def init self best pops 100 mchance 07 ps 1 im
  • Xamarin 加载项无法正常工作,无法查看加载项列表

    我刚刚开始在 Mac 上的 Xamarin Studio 中使用 CocosSharp 我正在尝试遵循此演练 https developer xamarin com guides cross platform game developmen
  • 通过 ldapmodify 修改 Active Directory 密码

    我正在研究各种 LDAP 操作的脚本编写 然而 我在 Active Directory 用户创建方面遇到了一些障碍 当我通过以下 LDIF 加载时 它失败ldapmodify命令 dn CN Frank CN Users DC domain
  • 更新到 Ubuntu 22.04 后 rbenv 安装失败 (Jammy Jellyfish)

    升级到 Ubuntu 22 04 Jammy Jellyfish 后 我注意到 Ruby 2 7 2 存在问题 因此我尝试安装 2 7 2 当安装失败时 又安装了 2 7 6 它也失败并出现相同的错误 rbenv install 2 7 6
  • Yeoman 和车把模板

    有人使用 yeoman 和 ember 吗 如果是这样 我如何让 yeoman 编译车把模板 如果可能的话我想使用 rake 管道 有没有人想出一个解决方案来编译 yeoman 的车把模板 Dan Gebhardt 一直致力于与 yeoma
  • 在 WooCommerce 中使用复选框以允许多种选择

    我已经使用 WooCommerce 一段时间了 但这个问题给我带来了问题 我正在为其创建网站的客户提供培训课程和演示文稿 并且该特定产品 或演示文稿 允许将多个不同的选项添加到购物车 每个选项都有自己的价格 因此 基本价格为零 然后 用户可
  • 如何仅使用 boto 2.25.0 通过全局二级索引查询 DynamoDB2 表?

    这是我从常规 DynamoDB 表切换到具有全局二级索引的 DynamoDB2 表的延续 所以我创建了如图所示的表格here https stackoverflow com questions 21736813 getting attrib