【问题标题】:Flask_PyMongo: TypeError: 'Database' object is not callableFlask_PyMongo:TypeError:“数据库”对象不可调用
【发布时间】:2017-07-29 22:56:35
【问题描述】:

这段从大得多的代码中缩减的简单代码在 pymongo 'find' 调用中会产生错误:

    from flask import Flask, request, jsonify
from flask_pymongo import PyMongo
from os import environ

CLIENT_PATH = "/api/v1.0"

app = Flask(__name__)
app.config['MONGO_URI'] = environ.get('MONGODB_URI', "mongodb://localhost:27017/test")
mongo = PyMongo(app)

@app.route(CLIENT_PATH, methods=['GET'])
def getClients():
        data = []
        cursor = mongo.db.client.find({}, {"_id": 0})
        for item in cursor:
            client_detail = {}
            client_detail['url'] = CLIENT_PATH + "/" + str(item.get('id'))
            client_detail['clientTitle'] = str(item.get('firstName')) + " " + str(item.get("familyName"))
            data.append(client_detail)
        return jsonify({"status": "success", "payload": data})

if __name__ == "__main__":

    app.run(debug=True)

如果我使用 python 2.7 运行它并在“http://localhost:5000/api/v1.0”上从浏览器进行调用,我会收到以下错误消息:

      File "/Users/markschulz/Projects/client/flask-client/app.py", line 16, in getClients
    cursor = mongo.db.client.find({}, {"_id": 0})
  File "/Users/markschulz/Projects/client/venv/lib/python2.7/site-packages/pymongo/database.py", line 1116, in __call__
    self.__name, self.__client.__class__.__name__))
  TypeError: 'Database' object is not callable. If you meant to call the 'find' method on a 'MongoClient' object it is failing because no such method exists.

使用的软件版本有:pymongo==3.4.0 Flask==0.12 Flask-PyMongo==0.4.1

这里有什么?

【问题讨论】:

    标签: python-2.7 flask pymongo


    【解决方案1】:

    你想要这样的东西:

    mongo.db.collection.find({}, {"_id": 0})
    

    其中“db”是您的数据库的名称,“collection”是您的集合的名称。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-10
      • 2022-10-05
      • 1970-01-01
      • 2021-11-24
      • 1970-01-01
      • 1970-01-01
      • 2021-08-21
      相关资源
      最近更新 更多