AWS DynamoDb Python:按DynamoDB中列表的内容过滤或查询

时间:2017-12-17 14:11:53

标签: python-3.x amazon-web-services aws-lambda amazon-dynamodb boto3

我是使用Python运行时的AWS Lambda新手,我正在编写一个python lambda函数,它从dynamo db获取结果,下面是我的患者表dynamo db结构。

{
"patient_id": 161,
  "patientVisits": [
    {
  "Diagnosis": [
    {
      "Diagnosis_Completion": "Definitive",
      "DiagnosisId": 100,
      "ICD_Code": "test ICd code for dignosis Id 100"
    }
  ],
  "Follow_Up_Recommendation": "Follow up recommendation Test",
  "visitId": 123
},
{
  "Diagnosis": [
    {
      "Diagnosis_Completion": "Definitive",
      "DiagnosisId": 100,
      "ICD_Code": "test ICd code for dignosis Id 100"
    }
  ], 
  "visitId": 124
}]}

此处患者表的关键字为patient_id且其具有许多属性,其中一个属性是患者访问列表,其中还有visitId,还包括诊断列表,我的要求是根据patientId和visitId进行诊断,所以我试着写python lambda就像这样

def list(event, context):
    table = dynamodb.Table(os.environ['PATIENT_TABLE'])
    patientId = 130
    visitId = 124
    # fetch all patientVisits from the database
    result = table.query(
    ProjectionExpression="#patientId, #pv.Diagnosis",
    FilterExpression = '#pv.visitId = :visit_id',
    ExpressionAttributeNames={ "#patientId": "patientId", "#pv" : "patientVisits"}, # Expression Attribute Names for Projection Expression only.
    ExpressionAttributeValues= {":visit_id": visitId},
    KeyConditionExpression=Key('patient_id').eq(patientId)   
)

以上是给我零结果,如果我将ProjectionExpression#pv.Diagnosis更改为#pv [0],请你帮我解决这个问题。诊断以及FilterExpression然后这个工作只给我第0个索引,如果visitId与第0个索引的visitID匹配,但是我想从来自visitId和patientId的patientVisits获取诊断列表,请你帮我解决这个问题。从很长一段时间里挣扎

提前谢谢你!!!

0 个答案:

没有答案