【发布时间】:2012-12-20 18:09:40
【问题描述】:
我需要为我的 Flask 应用程序实现一个 API,并看到了针对 Flask-Restless 的建议。我只是对这个库的基本用法遇到了困难,希望使用过它的人可以提供帮助。
创建 API 管理器和端点...
manager = APIManager(app, flask_sqlalchemy_db=db)
manager.create_api(Gallery, methods=['GET', 'POST', 'PUT', 'DELETE'])
...以及与之配套的模型
class Gallery(db.Model):
__tablename__ = 'galleries'
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(25))
def __init__(self, title):
self.title = title
现在,为了插入新条目,我使用了这个 jQuery ajax POST 请求。这工作正常。我已经在 sqlite db viewer 中对其进行了测试,并且可以看到条目。
$('#form').on('submit', function(e){
$.ajax({
type: 'post',
url: '/api/galleries',
contentType:"binary/octet-stream",
data: JSON.stringify({'title': $('#title').val()}),
success: function(){
alert('Success!');
}
});
e.preventDefault();
});
这就是问题所在。我在浏览器中转到 http://localhost:5000/api/galleries 并收到以下消息:
sqlalchemy.orm.exc.NoResultFound
NoResultFound: 没有为 one() 找到行
当api/galleries 应该返回一个数据库条目列表时,它会尝试运行 one() ,这很奇怪。我尝试api/galleries/1 并得到完全相同的错误。我仔细检查了一下,主 ID 是 1。我错过了什么?
【问题讨论】:
-
调试它并逐步跟踪以找到运行的语句。
标签: python flask flask-sqlalchemy flask-extensions