如何解决POST上的Sqlalchemy检查记录是否已存在并将其发送回
我有几个端点都遇到相同类型的问题。检查记录是否已经存在。在这种特定情况下,我正在验证是否已将具有相同url
值的记录添加到数据库中。
端点
api.add_resource(EventEntries,'/events/<int:event_id>/entries')
加载程序
class Entry (Resource):
#RETURNS A SINGLE EVENT
def get(self,entry_id):
schema = EntrySchema()
result = db.session.query(EntryModel).filter(EntryModel.id == entry_id)
return schema.dump(result,many=True),200
#PUTS A SINGLE EVENT
def put(self,entry_id):
event_id = event_id
title = request.json['title']
description = request.json['description']
type = request.json['type']
domain = request.json['domain']
language = request.json['language']
publishdate = request.json['publishdate']
url = request.json['url']
entry = EntryModel(event_id=event_id,title=title,description=description,type=type,domain=domain,language=language,publishdate=publishdate,url=url)
db.session.add(event)
db.session.commit()
data = ({'id' :entry.id,'title': entry.title,'description': entry.description,'type': entry.type,'domain': entry.domain,'language': entry.language,'publishdate': entry.publishdate,'url': entry.url})
response = jsonify(data)
response.status_code = 200 # or 400 or whatever
return response
修改
我修改了上面的文件以包括以下几行,这些行检查记录是否存在并尝试返回记录。即使条目不存在,这也会导致返回一个空数组。
# If record already exists
schema = EntrySchema()
result = db.session.query(EntryModel).filter(EntryModel.url == request.json['url'])
print(result)
print(request.json['url'])
if result is not None:
print("Record Already exists")
return schema.dump(result,200
else:
解决方法
已解决:
我添加了它,而不是上面的建议。
# If record already exists
schema = EntrySchema()
result = db.session.query(EntryModel).filter(EntryModel.url == request.json['url']).first()
print(result)
if not result is None:
print("Record Already exists")
return schema.dump(result,many=False),200
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。