*这个问题不是另一个问题的重复,我已经尝试过该问题给出的答案而且没有解决 我的问题。感谢。
我是Python的初学者,学习如何使用SQLalchemy。
但是我一直得到这个列表对象是不可调用的错误。有人可以给我一个指南,谢谢你。
@mod_core.route('/getDatatable', methods=['GET'])
def datatable_get():
# Query 'user' table.
_user = User.query.all()
_results = []
for user in _user:
print user.get_all()
_results.append(user.get_all())
return _results
127.0.0.1 - - [22 / Jan / 2017 17:10:46]" GET / getDatatable HTTP / 1.1" 500 - 回溯(最近一次调用最后一次):
文件" /usr/local/lib/python2.7/dist-packages/flask/app.py" ;,第2000行,致电 return self.wsgi_app(environ,start_response)
文件" /usr/local/lib/python2.7/dist-packages/flask/app.py" ;, 1991年,在wsgi_app response = self.make_response(self.handle_exception(e))
文件" /usr/local/lib/python2.7/dist-packages/flask_restful/ init .py",第271行,在error_router中 return original_handler(e)
文件" /usr/local/lib/python2.7/dist-packages/flask/app.py",第1567行,在handle_exception中 重新加注(exc_type,exc_value,tb)
文件" /usr/local/lib/python2.7/dist-packages/flask/app.py" ;, 1988年,在wsgi_app response = self.full_dispatch_request()
文件" /usr/local/lib/python2.7/dist-packages/flask/app.py",第1642行,在full_dispatch_request中 response = self.make_response(rv)
文件" /usr/local/lib/python2.7/dist-packages/flask/app.py" ;,第1746行,在make_response中 rv = self.response_class.force_type(rv,request.environ)
文件" /usr/local/lib/python2.7/dist-packages/werkzeug/wrappers.py",第847行,强制类型 response = BaseResponse(* _ run_wsgi_app(response,environ))
文件" /usr/local/lib/python2.7/dist-packages/werkzeug/wrappers.py",第57行,在_run_wsgi_app中 return _run_wsgi_app(* args)
文件" /usr/local/lib/python2.7/dist-packages/werkzeug/test.py",第871行,在run_wsgi_app中 app_rv = app(environ,start_response)
TypeError:' list'对象不可调用
更新1:我还尝试在返回之前将User更改为Json并仍然出现相同的错误:
@mod_core.route('/getDatatable', methods=['GET'])
def datatable_get():
# Query 'user' table.
_user = User.query.all()
results = []
for user in _user:
results.append(user.to_json())
print results
return results
用户类
def to_json(self):
"""
Return a JSON response for RESTful API GET request.
"""
_user_in_josn = {'login_id': self.login_id,
'fullname': self.fullname,
'nickname': self.nickname,
'matric': self.matric_no,
'email': self.email,
'alt_email': self.alt_email
}
return _user_in_josn
更新2:尝试在返回结果之前转换为JSON
0x7f88f80b14d0处的用户对象>不是JSON可序列化的
请指导我。感谢您的关注和帮助。
答案 0 :(得分:1)
我不确定问题的确切位置,但我确实看到了您对user
个对象所做的令人困惑的事情。您已在循环中获得user
,但您仍然在调用user.get_all()
。我不确定应该做什么,因为在这一点上,user
只是一个用户对象。您想要user
的数据库ID吗?其他一些数据如用户名?
尝试将该行更改为以下内容:
_results.append(user.id)
这会将user
的ID添加到您的列表中。或者,您可以附加存储在user
对象中的任何其他数据。如果您想return
数据库中所有用户的完整列表,请执行以下操作:
return _user
我可能还建议重命名这些变量_user
和_results
。使用前导下划线通常仅用于隐藏变量,并且在这里似乎没有任何需要。此外,由于_user
存储了许多user
个对象,因此类似users
的名称可能更适合指示变量包含的内容。