2016-07-28 65 views
1

這是我在使用dbs時的第一個鏡頭,我在基礎知識方面遇到了一些麻煩。試圖在網上查找,但無法找到簡單問題的答案。當我嘗試向我的數據庫添加一些信息時,我遇到了一大堆錯誤。用python插入數據在mongodb中

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

當我只做: DB = get_db() 打印分貝 它打印此: 數據庫(MongoClient(主機= [ 'ds029735.mlab.com:29735'],document_class =快譯通,tz_aware =假連接= True),u'myDB' 其中我猜我意味着我連接到分貝,但我似乎無法添加任何東西 – VincFort

回答

2
  1. 檢查您xxxxxxxds029735.mlab.com:29735/xxxxxxx等於myDBdb = client.myDB兩次。我的意思是如果您的連接字符串是mongodb://username:[email protected]:29735/xyz那麼您的代碼應該是db = client.xyz而不是db = client.zyx(或其他名稱)。

  2. 入住MLAB控制面板,如果您的用戶只讀http://i.imgur.com/It32S1d.png

這兩個問題將返回錯誤,像你,所以我不知道與一個你所面臨做。

+0

感謝您的迴應。爲什麼用戶應該只讀嗎?將稍後檢查,如果他們工作,但我知道我的用戶不是隻讀的。 – VincFort

+0

@VincFort它不應該只是'OperationFailure:未經myDB授權來執行命令'如果是的話可以拋出。 –