2016-07-28 4 views
1

Это мой первый снимок при использовании dbs, и у меня возникли проблемы с основами. Пытался смотреть онлайн, но не мог найти ответы на простые вопросы. Когда я пытаюсь добавить некоторую информацию в свой db, я получаю целую кучу ошибок.Вставить данные в mongodb с python

import pymongo 


def get_db(): 
    from pymongo import MongoClient 
    client = MongoClient("mongodb://xxxxxx:[email protected]:29735/xxxxxxx") 
    db = client.myDB 
    return db 

def add_country(db): 
    db.countries.insert({"name": "Canada"}) 

def get_country(db): 
    return db.contries.find_one() 

db = get_db() 
add_country(db) 

Я получил сообщение об ошибке:

File "/Users/vincentfortin/Desktop/Python_code/mongo.py", line 21, in <module> 
    add_country(db) 
    File "/Users/vincentfortin/Desktop/Python_code/mongo.py", line 11, in add_country 
    db.countries.insert({"name": "Canada"}) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pymongo/collection.py", line 2212, in insert 
    check_keys, manipulate, write_concern) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pymongo/collection.py", line 535, in _insert 
    check_keys, manipulate, write_concern, op_id, bypass_doc_val) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pymongo/collection.py", line 516, in _insert_one 
    check_keys=check_keys) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pymongo/pool.py", line 239, in command 
    read_concern) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pymongo/network.py", line 102, in command 
    helpers._check_command_response(response_doc, None, allowable_errors) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pymongo/helpers.py", line 205, in _check_command_response 
    raise OperationFailure(msg % errmsg, code, response) 
pymongo.errors.OperationFailure: not authorized on myDB to execute command { insert: "countries", ordered: true, documents: [ { _id: ObjectId('579a6c6ed51bef1274162ff4'), name: "Canada" } ] } 
+0

отредактируйте форматирование, это ужасно, чтобы читать! Я не знаю о вашей проблеме, но, возможно, проблема с правами на запись? Можете ли вы попробовать с запросом на чтение вместо запроса на запись? –

+0

когда я делаю только: дБ = get_db() печати дб печатает это: Database (MongoClient (хост = [ 'ds029735.mlab.com:29735'], document_class = ДИКТ, tz_aware = False, подключение = True), u'myDB ' , который, я думаю, означает, что я подключен к db, но я не могу ничего добавить – VincFort

ответ

2
  1. Проверьте дважды, если ваш xxxxxxx от ds029735.mlab.com:29735/xxxxxxx равно myDB от db = client.myDB. Я имею в виду, если ваша строка подключения mongodb://username:[email protected]:29735/xyz, то ваш код должен быть db = client.xyz, а не db = client.zyx (или другими именами).

  2. Проверить в панели управления MLAB, если ваш пользователь Read-Only http://i.imgur.com/It32S1d.png

Обе эти проблемы возвращает ошибки, как ваш, так что я не знаю, с какой из них вы столкнулись.

+0

Спасибо за ответ. Почему пользователь должен быть доступен только для чтения? Проверяет позже, если они работают, но Я знаю, что мой пользователь не доступен только для чтения. – VincFort

+0

@VincFort это не должно, но «OperationFailure: не авторизованный на myDB для выполнения команды» может быть запущен, если он есть. –

Смежные вопросы