2015-04-28 2 views
1

Я пытаюсь написать функцию для подключения к mongodb и возврата объекта коллекции. У меня есть следующие:Как написать функцию для подключения к mongodb с помощью pymongo

def getCollection(dbname,collection): 
    client = MongoClient() 
    data_base = client.dbname 
    collObject = data_base.collection 
    return collObject 

Когда я бегу:

collection = getCollection(client, "hkpr_restore", "agents") 
print collection 

я получаю:

Collection(Database(MongoClient('localhost', 27017), u'dbname'), u'collection') 

Что я делаю неправильно?

+1

Подсказка: подсчитать количество аргументов вы проходящие в вашу функцию. Возможно, вы захотите прочитать [Как задать хороший вопрос] (http://stackoverflow.com/help/how-to-ask), что увеличивает вероятность получения полезного ответа _drastically_. Вы можете найти превосходный эссе [ESR] (https://en.m.wikipedia.org/wiki/Eric_S._Raymond) [Как задавать вопросы Smart Way] (http://catb.org/~esr/ faqs/smart-questions.html) тоже полезно. –

ответ

4

При использовании client.dbname атрибут имя_бд называется, то есть вы извлекаете базу данных с именем имя_бд.

То же самое касается data_base.collection.

Решение:

def getCollection(dbname, collection): 
    client = MongoClient() 
    data_base = getattr(client, dbname) 
    collObject = getattr(data_base, collection) 
    return collObject 

Альтернатива: Вы можете использовать словарь доступ стиля:

def getCollection(dbname, collection): 
    client = MongoClient() 
    data_base = client[dbname] 
    collObject = data_base[collection] 
    return collObject 
Смежные вопросы