Flask AWS Dynamo DB:POST API

问题描述 投票:0回答:1

我是DynamoDB和Flask的新手,我有端点将记录插入dynamo数据库,我的有效负载看起来像这样

{
  "Address": "2013 3A New Jersey",
  "Contact_Number1": "1105632",
  "Contact_Number2": "1105632",
  "DOB": "1968-08-12",
  "Father": "FTest2",
  "First_name": "FTest2",
  "Gender": "Male",
  "Hospital_Reg_Num": "HRM123",
  "Husband": "HTest2",
  "Last_name": "LTest2",
  "Last_visit_date": "2017-11-12",
  "Mother": "MTest2",
  "patient_id": "100"
}

我的flaska api代码是这样的

def createPatient():try:userId = request.json.get('user_id')firstName = request.json.get('First_name')lastName = request.json.get('Last_name')gender = request.json.get ('Gender')dob = request.json.get('DOB'),除了KeyError:raise InvalidUsage('Bad Request',status_code = 400)

print(request.json)
father = request.json.get('Father')  if 'Father' in request.json  else None
mother = request.json.get('Mother') if 'Mother' in request.json else None
husband =  request.json.get('Husband') if 'Husband' in  request.json else None
address = request.json.get('Address') if 'Address' in request.json else None
lastVisitDate= request.json.get('Last_visit_date') if 'Last_visit_date' in request.json else None

#create a new db entry
userData = {
    'user_id': { 'N': userId },
    'First_name': { 'S': firstName },
    'Last_name': { 'S': lastName },
    'Hospital_Reg_Num': { 'S': hospitalReg },
    'Gender': { 'S': gender },
    'DOB': { 'S': dob },
    'Father': { 'S': father },
    'Mother': { 'S': mother },
    'Husband': { 'S': husband },
    'Address': { 'S': address },
    'Last_visit_date': { 'S': lastVisitDate }
}

resp = client.put_item(TableName='user',Item=userData)
return jsonify(resp), 200

如果在有效载荷中我错过任何参数说父亲名称然后它没有插入其他记录它给我一个错误

Invalid type for parameter Item.Father.S, value: None, type: <class 'NoneType'>, valid types: <class 'str'>

你能帮我吗,我怎么能忽略fatherName在dynamo db中插入记录?想要更新有效负载发送的记录

python-3.x amazon-dynamodb flask-restful
1个回答
0
投票

不要将缺少的参数设置为None,而是将它们设置为空字符串。例如:

father = request.json.get(‘Father’, ‘’)

如果未找到指定的键,则第二个arg返回默认值。

© www.soinside.com 2019 - 2024. All rights reserved.