我可以限制 flask rest Api 中的 post 方法向数据库添加其他数据吗?
Can I restrict post method in flask restApi from adding another data to the database?
鉴于我当前在 db 中的数据,我想限制 post 方法向数据库添加其他数据。我想要的是限制 post 方法添加另一个数据,并且只更新数据库中的现有数据。
代码:
def get(self):
predict = PredictModel.query.all()
return {'Predict': list(x.json() for x in predict)}
def post(self):
data = request.get_json()
new_predict = PredictModel(data['timelag1'],data['timelag2'],data['timelag3'],data['timelag4'],data['timelag5'])
db.session.add(new_predict)
db.session.commit()
db.session.flush()
return new_predict.json(),201
数据库中的当前数据:
"Predict": [
{
"timelag1":1,
"timelag2": 1,
"timelag3": 1,
"timelag4": 1,
"timelag5": 1
}
]
}
用户输入另一个数据后数据库中的数据:
"Predict": [
{
"timelag1":2,
"timelag2": 2,
"timelag3": 2,
"timelag4": 2,
"timelag5": 2
}
]
}
我建议阅读这个关于如何进行数据库操作的答案(尤其是后面的):
Flask-SQLalchemy update a row's information
您将需要某种主键或唯一标识符来指定您要更改的行 - 类似于“id”
这是一些示例代码,如果您根据自己的情况对其进行调整,它们可能会起作用:
instance = User.query.filter(User.id==id)
data=instance.update(dict(json_data))
db.session.commit()
或
num_rows_updated = User.query.filter_by(username='admin').update(dict(email='my_new_email@example.com')))
db.session.commit()
鉴于我当前在 db 中的数据,我想限制 post 方法向数据库添加其他数据。我想要的是限制 post 方法添加另一个数据,并且只更新数据库中的现有数据。
代码:
def get(self):
predict = PredictModel.query.all()
return {'Predict': list(x.json() for x in predict)}
def post(self):
data = request.get_json()
new_predict = PredictModel(data['timelag1'],data['timelag2'],data['timelag3'],data['timelag4'],data['timelag5'])
db.session.add(new_predict)
db.session.commit()
db.session.flush()
return new_predict.json(),201
数据库中的当前数据:
"Predict": [
{
"timelag1":1,
"timelag2": 1,
"timelag3": 1,
"timelag4": 1,
"timelag5": 1
}
]
}
用户输入另一个数据后数据库中的数据:
"Predict": [
{
"timelag1":2,
"timelag2": 2,
"timelag3": 2,
"timelag4": 2,
"timelag5": 2
}
]
}
我建议阅读这个关于如何进行数据库操作的答案(尤其是后面的): Flask-SQLalchemy update a row's information
您将需要某种主键或唯一标识符来指定您要更改的行 - 类似于“id” 这是一些示例代码,如果您根据自己的情况对其进行调整,它们可能会起作用:
instance = User.query.filter(User.id==id)
data=instance.update(dict(json_data))
db.session.commit()
或
num_rows_updated = User.query.filter_by(username='admin').update(dict(email='my_new_email@example.com')))
db.session.commit()