Python SQLalchemy类型错误:';列表';对象不可调用

Python SQLalchemy类型错误:';列表';对象不可调用,python,sqlalchemy,flask-sqlalchemy,Python,Sqlalchemy,Flask Sqlalchemy,*这个问题不是另一个问题的重复,我已经尝试了那个问题的答案,但没有解决 我的问题。谢谢 我是Python的初学者,正在学习如何使用SQLalchemy 我正在尝试从数据库表中检索所有行 以对象列表的形式返回结果 我的js代码将读取对象列表并显示到视图中 然而,我一直得到这个列表对象是不可调用的错误。有人能给我一个关于这个的指导吗?谢谢 @mod_core.route('/getDatatable', methods=['GET']) def datatable_get(): # Quer

*这个问题不是另一个问题的重复,我已经尝试了那个问题的答案,但没有解决 我的问题。谢谢

我是Python的初学者,正在学习如何使用SQLalchemy

  • 我正在尝试从数据库表中检索所有行
  • 以对象列表的形式返回结果
  • 我的js代码将读取对象列表并显示到视图中
  • 然而,我一直得到这个列表对象是不可调用的错误。有人能给我一个关于这个的指导吗?谢谢

    @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$范围中。我可以了解需要更改的部分吗?我看到问题被标记为重复。查看其他问题的答案,我认为它将解决您在这里的问题。问题是直接返回列表对象,而不是将该列表作为响应对象的一部分返回。查看其他问题了解更多详细信息,它应该比我的帮助更好。