首页 \ 问答 \ AWS DynamoDB Python - 无法识别boto3 Key()方法(查询)(AWS DynamoDB Python - boto3 Key() methods not recognized (Query))

AWS DynamoDB Python - 无法识别boto3 Key()方法(查询)(AWS DynamoDB Python - boto3 Key() methods not recognized (Query))

我正在使用Lambda(Python)来查询我的DynamoDB数据库。 我正在使用boto3库,我能够创建一个“等效”查询:

这个脚本有效:

import boto3
from boto3.dynamodb.conditions import Key, Attr
import json

def create_list(event, context):
    resource = boto3.resource('dynamodb')
    table = resource.Table('Table_Name')

    response = table.query(
        TableName='Table_Name',
        IndexName='Custom-Index-Name',
        KeyConditionExpression=Key('Number_Attribute').eq(0)
    )
    return response

但是,当我将查询表达式更改为:

KeyConditionExpression=Key('Number_Attribute').gt(0)

我收到错误:

"errorType": "ClientError",
  "errorMessage": "An error occurred (ValidationException) when calling the Query operation: Query key condition not supported"

根据这[1]资源,“gt”是Key()的方法。 有没有人知道这个库是否已经更新,或者除了“eq”之外还有哪些其他方法?

[1] http://boto3.readthedocs.io/en/latest/reference/customizations/dynamodb.html#ref-dynamodb-conditions

- - - - -编辑 - - - - -

我也尝试使用旧方法:

response = client.query(
        TableName = 'Table_Name',
        IndexName='Custom_Index',
        KeyConditions = {
            'Custom_Number_Attribute':{
                'ComparisonOperator':'EQ',
                'AttributeValueList': [{'N': '0'}]
            }
        }
    )

这很有用,但是当我尝试时:

response = client.query(
            TableName = 'Table_Name',
            IndexName='Custom_Index',
            KeyConditions = {
                'Custom_Number_Attribute':{
                    'ComparisonOperator':'GT',
                    'AttributeValueList': [{'N': '0'}]
                }
            }
        )

...这是行不通的。

为什么EQ是在这些情况下工作的唯一方法? 我不确定文档中缺少什么。


I am using Lambda (Python) to query my DynamoDB database. I am using the boto3 library, and I was able to make an "equivalent" query:

This script works:

import boto3
from boto3.dynamodb.conditions import Key, Attr
import json

def create_list(event, context):
    resource = boto3.resource('dynamodb')
    table = resource.Table('Table_Name')

    response = table.query(
        TableName='Table_Name',
        IndexName='Custom-Index-Name',
        KeyConditionExpression=Key('Number_Attribute').eq(0)
    )
    return response

However, when I change the query expression to this:

KeyConditionExpression=Key('Number_Attribute').gt(0)

I get the error:

"errorType": "ClientError",
  "errorMessage": "An error occurred (ValidationException) when calling the Query operation: Query key condition not supported"

According to this [1] resource, "gt" is a method of Key(). Does anyone know if this library has been updated, or what other methods are available other than "eq"?

[1] http://boto3.readthedocs.io/en/latest/reference/customizations/dynamodb.html#ref-dynamodb-conditions

---------EDIT----------

I also just tried the old method using:

response = client.query(
        TableName = 'Table_Name',
        IndexName='Custom_Index',
        KeyConditions = {
            'Custom_Number_Attribute':{
                'ComparisonOperator':'EQ',
                'AttributeValueList': [{'N': '0'}]
            }
        }
    )

This worked, but when I try:

response = client.query(
            TableName = 'Table_Name',
            IndexName='Custom_Index',
            KeyConditions = {
                'Custom_Number_Attribute':{
                    'ComparisonOperator':'GT',
                    'AttributeValueList': [{'N': '0'}]
                }
            }
        )

...it does not work.

Why would EQ be the only method working in these cases? I'm not sure what I'm missing in the documentation.


原文:
更新时间:2021-12-31 08:12

最满意答案

Index未定义one.use与i 。使用document.ready更好的包装代码。在文档加载后执行该功能

$(document).ready(function(){
var Sites = [
{"country_name": "Denmark", "latitude": 56, "longitude": 10, "status": "OK", "site_name": "FLS Denmark", "Model_Number": "12345"},
{ "country_name": "Zaire", "latitude": -20, "longitude": 30, "status": "OK", "site_name": "FLS Zaire", "Model_Number": "67890" },
{ "country_name": "Vietnam", "latitude": 16, "longitude": 106, "status": "NO", "site_name": "FLS Vietnam", "Model_Number": "1111" }]

var DefaultText = "";
var i;

for (i = 0; i < Sites.length; i++)
{
DefaultText += '<div class="rightcontainer">';
DefaultText += '<img id="productimage" src="src/images/retrofit.png" onclick="DisplayProfileCard();"/>';
DefaultText += '<div id="imagedetail">';

DefaultText += '<span class="details">Product Type:'+ Sites[i].Model_Number +'</span>';
DefaultText += '<span class="details">Version / Size <img class="row_one_icon lightbulb_icon" id="lightbulb" src="src/images/lightbulb1.png" onClick="LightBulb()" /><img id="convert" class="row_one_icon arrow_icon" src="src/images/arrow_Off.png" onClick="Conversion()"/><img id="lightning" class="row_one_icon" src="src/images/lightningOff.png" onClick="Lightning()"/><img id="bullseye" class="row_one_icon bullseye" src="src/images/bullseye_off.png" onClick="BullsEye()"/></span>';
DefaultText += '<span class="details">Estimated annual Spend <img class="row_one_icon ribbon" src="src/images/ribbon1.png"/><img class="row_one_icon map" src="src/images/map1.png"/><img class="row_one_icon paper_stack" id="paper" src="src/images/paper_stack_Off.png" onclick="PaperStack()"/><img class="row_one_icon chain" id="chain" src="src/images/chain_Off.png" onClick="ChainLink()"/></span>';
DefaultText += '<span class="details">Site name / manufacturer</span>';
DefaultText += '<span class="details">Selling Sales Eng</span>';
DefaultText += '</div>';
DefaultText += '</div>';
}
$('#searchcontainer').append(DefaultText);
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="searchcontainer"></div>


Index was undefined one.use with i .And better wrap code with document.ready.its perform the function after document loaded

$(document).ready(function(){
var Sites = [
{"country_name": "Denmark", "latitude": 56, "longitude": 10, "status": "OK", "site_name": "FLS Denmark", "Model_Number": "12345"},
{ "country_name": "Zaire", "latitude": -20, "longitude": 30, "status": "OK", "site_name": "FLS Zaire", "Model_Number": "67890" },
{ "country_name": "Vietnam", "latitude": 16, "longitude": 106, "status": "NO", "site_name": "FLS Vietnam", "Model_Number": "1111" }]

var DefaultText = "";
var i;

for (i = 0; i < Sites.length; i++)
{
DefaultText += '<div class="rightcontainer">';
DefaultText += '<img id="productimage" src="src/images/retrofit.png" onclick="DisplayProfileCard();"/>';
DefaultText += '<div id="imagedetail">';

DefaultText += '<span class="details">Product Type:'+ Sites[i].Model_Number +'</span>';
DefaultText += '<span class="details">Version / Size <img class="row_one_icon lightbulb_icon" id="lightbulb" src="src/images/lightbulb1.png" onClick="LightBulb()" /><img id="convert" class="row_one_icon arrow_icon" src="src/images/arrow_Off.png" onClick="Conversion()"/><img id="lightning" class="row_one_icon" src="src/images/lightningOff.png" onClick="Lightning()"/><img id="bullseye" class="row_one_icon bullseye" src="src/images/bullseye_off.png" onClick="BullsEye()"/></span>';
DefaultText += '<span class="details">Estimated annual Spend <img class="row_one_icon ribbon" src="src/images/ribbon1.png"/><img class="row_one_icon map" src="src/images/map1.png"/><img class="row_one_icon paper_stack" id="paper" src="src/images/paper_stack_Off.png" onclick="PaperStack()"/><img class="row_one_icon chain" id="chain" src="src/images/chain_Off.png" onClick="ChainLink()"/></span>';
DefaultText += '<span class="details">Site name / manufacturer</span>';
DefaultText += '<span class="details">Selling Sales Eng</span>';
DefaultText += '</div>';
DefaultText += '</div>';
}
$('#searchcontainer').append(DefaultText);
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="searchcontainer"></div>

相关问答

更多
  • Index未定义one.use与i 。使用document.ready更好的包装代码。在文档加载后执行该功能 $(document).ready(function(){ var Sites = [ {"country_name": "Denmark", "latitude": 56, "longitude": 10, "status": "OK", "site_name": "FLS Denmark", "Model_Number": "12345"}, { "country_name": "Zair ...
  • 不确定这两行是做什么的var data = JSON.stringify(result, null, 2);document.getElementById('load').innerHTML = data; ,但以下代码段将允许您循环partners $.getJSON("someURL_IcantDisclose", function (result) { for(var i=0; i
  • function nextItem(i) { if(i < numitems) { var currentitem = items[i]; $.getJSON("http://localhost/items.php", {'itemname' : currentitem}, function (json) { alert (json); nextItem(i + 1); }); } } nextItem(0); 将它放在 ...
  • 相关文章

    更多

    最新问答

    更多
  • 您如何使用git diff文件,并将其应用于同一存储库的副本的本地分支?(How do you take a git diff file, and apply it to a local branch that is a copy of the same repository?)
  • 将长浮点值剪切为2个小数点并复制到字符数组(Cut Long Float Value to 2 decimal points and copy to Character Array)
  • OctoberCMS侧边栏不呈现(OctoberCMS Sidebar not rendering)
  • 页面加载后对象是否有资格进行垃圾回收?(Are objects eligible for garbage collection after the page loads?)
  • codeigniter中的语言不能按预期工作(language in codeigniter doesn' t work as expected)
  • 在计算机拍照在哪里进入
  • 使用cin.get()从c ++中的输入流中丢弃不需要的字符(Using cin.get() to discard unwanted characters from the input stream in c++)
  • No for循环将在for循环中运行。(No for loop will run inside for loop. Testing for primes)
  • 单页应用程序:页面重新加载(Single Page Application: page reload)
  • 在循环中选择具有相似模式的列名称(Selecting Column Name With Similar Pattern in a Loop)
  • System.StackOverflow错误(System.StackOverflow error)
  • KnockoutJS未在嵌套模板上应用beforeRemove和afterAdd(KnockoutJS not applying beforeRemove and afterAdd on nested templates)
  • 散列包括方法和/或嵌套属性(Hash include methods and/or nested attributes)
  • android - 如何避免使用Samsung RFS文件系统延迟/冻结?(android - how to avoid lag/freezes with Samsung RFS filesystem?)
  • TensorFlow:基于索引列表创建新张量(TensorFlow: Create a new tensor based on list of indices)
  • 企业安全培训的各项内容
  • 错误:RPC失败;(error: RPC failed; curl transfer closed with outstanding read data remaining)
  • C#类名中允许哪些字符?(What characters are allowed in C# class name?)
  • NumPy:将int64值存储在np.array中并使用dtype float64并将其转换回整数是否安全?(NumPy: Is it safe to store an int64 value in an np.array with dtype float64 and later convert it back to integer?)
  • 注销后如何隐藏导航portlet?(How to hide navigation portlet after logout?)
  • 将多个行和可变行移动到列(moving multiple and variable rows to columns)
  • 提交表单时忽略基础href,而不使用Javascript(ignore base href when submitting form, without using Javascript)
  • 对setOnInfoWindowClickListener的意图(Intent on setOnInfoWindowClickListener)
  • Angular $资源不会改变方法(Angular $resource doesn't change method)
  • 在Angular 5中不是一个函数(is not a function in Angular 5)
  • 如何配置Composite C1以将.m和桌面作为同一站点提供服务(How to configure Composite C1 to serve .m and desktop as the same site)
  • 不适用:悬停在悬停时:在元素之前[复制](Don't apply :hover when hovering on :before element [duplicate])
  • 常见的python rpc和cli接口(Common python rpc and cli interface)
  • Mysql DB单个字段匹配多个其他字段(Mysql DB single field matching to multiple other fields)
  • 产品页面上的Magento Up出售对齐问题(Magento Up sell alignment issue on the products page)