使用在Databse类中创建的pymongo find_one()的预定义方法实现的find_one(集合,查询)方法我做错了吗?

时间:2018-02-09 06:07:23

标签: python oop flask pymongo

我正在学习烧瓶,因为趋势是第一个应用教授的应用程序,所以我实现了一个数据库类来实现pymongo api的各种方法。已经在类中定义了各种方法,如Implementation of Database Class and Query Outputs of find_one() method所示。创建的所有其他方法都运行良好,但面对 find_one(集合,查询)的问题,无论数据库是否有条目,它始终都不返回任何值。但是,API的预定义方法返回正确的数据。我在哪里做错了?

import pymongo
class Database:
    URI = 'mongodb://127.0.0.1:27017'
    DATABASE = None

    @staticmethod
    def initialize():
        client = pymongo.MongoClient(Database.URI)
        Database.DATABASE = client['BBloger']

    @staticmethod
    def insert(collection, data):
        Database.DATABASE[collection].insert(data)

    @staticmethod
    def remove(collection, query):
        Database.DATABASE[collection].remove(query)

    @staticmethod
    def find(collection, query):
        Database.DATABASE[collection].find(query)

    @staticmethod
    def find_one(collection, query):
        Database.DATABASE[collection].find_one(query)

我正在使用 Flask 的版本 0.12.2 方法和 3.6.0 版本的 PyMongo

1 个答案:

答案 0 :(得分:0)

查询已解决,我忘了默认情况下任何python方法返回None值,我得到的是输出。修改后的代码将是:

import pymongo
class Database:
    URI = 'mongodb://127.0.0.1:27017'
    DATABASE = None

    @staticmethod
    def initialize():
        client = pymongo.MongoClient(Database.URI)
        Database.DATABASE = client['BBloger']

    @staticmethod
    def insert(collection, data):
        Database.DATABASE[collection].insert(data)

    @staticmethod
    def remove(collection, query):
        Database.DATABASE[collection].remove(query)

    @staticmethod
    def find(collection, query):
        return Database.DATABASE[collection].find(query)

    @staticmethod
    def find_one(collection, query):
        return Database.DATABASE[collection].find_one(query)