Python SQLalchemy类型错误:';列表';对象不可调用
*这个问题不是另一个问题的重复,我已经尝试了那个问题的答案,但没有解决 我的问题。谢谢 我是Python的初学者,正在学习如何使用SQLalchemyPython SQLalchemy类型错误:';列表';对象不可调用,python,sqlalchemy,flask-sqlalchemy,Python,Sqlalchemy,Flask Sqlalchemy,*这个问题不是另一个问题的重复,我已经尝试了那个问题的答案,但没有解决 我的问题。谢谢 我是Python的初学者,正在学习如何使用SQLalchemy 我正在尝试从数据库表中检索所有行 以对象列表的形式返回结果 我的js代码将读取对象列表并显示到视图中 然而,我一直得到这个列表对象是不可调用的错误。有人能给我一个关于这个的指导吗?谢谢 @mod_core.route('/getDatatable', methods=['GET']) def datatable_get(): # Quer
@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行,在call
返回self.wsgi_应用程序(环境,启动响应)
文件“/usr/local/lib/python2.7/dist packages/flask/app.py”,第1991行,在wsgi_应用程序中
响应=self.make\u响应(self.handle\u异常(e))
文件“/usr/local/lib/python2.7/dist packages/flask\u restful/init.py”,第271行,错误
返回原始处理程序(e)
文件“/usr/local/lib/python2.7/dist packages/flask/app.py”,第1567行,在句柄中
重放(exc_类型、exc_值、tb)
文件“/usr/local/lib/python2.7/dist packages/flask/app.py”,第1988行,在wsgi_应用程序中
response=self.full\u dispatch\u request()
文件“/usr/local/lib/python2.7/dist packages/flask/app.py”,第1642行,完整发送请求
反应=自我反应(rv)
文件“/usr/local/lib/python2.7/dist packages/flask/app.py”,第1746行,在make_响应中
rv=自我响应类强制类型(rv,请求环境)
文件“/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行,在wsgi应用程序中
return _run_wsgi_app(*args)
文件“/usr/local/lib/python2.7/dist packages/werkzeug/test.py”,第871行,在run\u wsgi\u应用程序中
app_rv=app(环境,启动响应)
TypeError:“列表”对象不可调用
更新1:我还尝试在返回之前将用户更改为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
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
0x7f88f80b14d0>处的用户对象不可JSON序列化
请带我走。感谢您的关注和帮助。我不确定您的问题到底是从哪里来的,但我确实看到您在使用
用户
对象时所做的一件令人困惑的事情。您在循环中获得了一个user
,但仍在调用user.get\u all()
。我不确定这应该做什么,因为在这一点上,user
只是一个用户对象。您想要用户的数据库ID吗?其他一些数据,比如用户名
尝试将该行更改为以下内容:
_results.append(user.id)
这将把用户的ID添加到您的列表中。或者,您可以附加存储在user
对象中的任何其他数据。如果要返回数据库中所有用户的完整列表,请执行以下操作:
return _user
我还建议重命名那些变量\u user
和\u results
。使用前导下划线通常只用于隐藏变量,这里似乎不需要这样做。另外,由于\u user
存储了许多user
对象,因此像users
这样的名称可能更适合指示变量包含的内容。堆栈跟踪将有帮助,谢谢您的回复!我想返回数据库中所有用户的完整列表。我尝试返回_user,但它给了我以下错误类型错误:“list”对象不可调用。它可能来自函数返回的列表的使用方式。查看代码的这一部分,了解如何使用返回的数据。它只是一个列表,所以你可以循环使用它,或者你可以像这样用方括号对它进行索引users[0]
,但是你不能像函数一样调用它(看起来像这样users()
)。谢谢你的回复!我用angularJS向flask索要数据$然后(函数(响应){$scope.tableresults=response.data}…我在这里并没有像函数一样调用它。只需将结果绑定到angular$范围中。我可以了解需要更改的部分吗?我看到问题被标记为重复。查看其他问题的答案,我认为它将解决您在这里的问题。问题是直接返回列表对象,而不是将该列表作为响应对象的一部分返回。查看其他问题了解更多详细信息,它应该比我的帮助更好。