我试图在收到数据后将一些数据保存到我的数据库中
这是我的api.py文件:
from flask import Flask, request, abort, jsonify
from flask_cors import cross_origin
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://localhost:5432/****'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
class Communication(db.Model):
__tablename__ = 'comm'
id = db.Column('comm_id', db.Integer, primary_key=True)
early = db.Column(db.Boolean, nullable=False)
late = db.Column(db.Boolean, nullable=False)
message = db.Column(db.String, nullable=False)
def __init__(self, early, late, message):
self.early = early
self.late = late
self.message = message
db.drop_all()
db.create_all()
@app.route('/api/form', methods=['POST'])
@cross_origin(origin='localhost', headers=['Content- Type', 'Authorization'])
def retrieve_info():
if not request.json:
abort(400)
else:
early = request.json.get('early')
late = request.json.get('late')
message = request.json.get('message')
test = Communication(early=early,
late=late,
message=message)
db.session.add(test)
db.session.commit()
return jsonify('ok'), 200
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000, debug=True)
这是我发送的json:
{
"early": true ,
"late": false ,
"message": "Hello world"
}
奇怪的是,我收到0异常或错误消息,但我的数据库中没有保存任何内容。 我不明白我的代码有什么问题(我检查了与数据库的连接是否正常)
答案 0 :(得分:1)
关于我的评论,我想我通过使用你的commit语句定义一个变量来看你想要完成什么,但我更喜欢try / else来完成它。我可能会重构你的代码如下:
def retrieve_info():
if not request.json:
abort(400)
try:
early = request.json.get('early')
late = request.json.get('late')
message = request.json.get('message')
test = Communication(early=early,
late=late,
message=message)
db.session.add(test)
db.session.commit()
return jsonify('ok'), 200
except Exception as e:
return jsonify(e), 500
这样,如果从实例化db模型到将数据提交到db时出现异常,则except部分将优雅地告诉您原因。
答案 1 :(得分:0)
添加对象后你没有commit the session。