简体   繁体   中英

Where i am doing wrong with find_one(collection, query) method implemented using predefined method of pymongo find_one() created in Databse class?

I was learning flask, and as the trend is the first application taught is a Blog application, So i have implemented a Database class to implement various methods of pymongo api. Various methods has been defined in the Class as shown in the Implementation of Database Class and Query Outputs of find_one() method . All other methods created are working well, but facing issue with find_one(collection, query) it always return none value, no matter whether database have entry or not. But, the predefined method of API return correct data. Where i am doing wrong?

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)

I am using version 0.12.2 method of Flask and 3.6.0 version of PyMongo

The query is resolved, i forget that by default any python method return None value, which i was getting as output. The modified code will be:

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)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM