2017-08-01 100 views
0

我試圖做一個簡單的博客,其中我試圖從數據庫中插入和獲取數據。雖然在shell中執行相同的語句,但插入數據仍可正常工作,但獲取數據時都使用.find().find_one()返回None即使數據庫顯示數據,PyMongo也沒有返回

我想通過以下一系列代碼

database.py

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

post.py

@staticmethod 
def fetch_from_db(): 
    return Database.fetchdata('posts') 

app.py

的獲取在三個文件中的數據
Database.initalise() 
testPost = Post.fetch_from_db() 
print(testPost) 
+2

你沒有從fetchdata返回任何東西 – user602525

+0

你正在拋出'find_one()'返回的文檔。您需要像這樣返回它:'返回Database.DATABASE [collection] .find_one()' – styvane

+0

@ S.M.Styvane謝謝。我的代碼現在可用! –

回答

-1

This i SA有據可查的問題,例如代碼:

>>> from pymongo import MongoClient 
>>> c = MongoClient() 
>>> c.test_db.test_col.find_one() 
{u'test': u'document', u'x': 1, u'_id': ObjectId('5980a8fd168186e9fb46c638'), u'other': u'value'} 

編輯:

,或者如果你喜歡,你可以寫這樣的:

>>> c = MongoClient() 
>>> db = c.test_db 
>>> col = db.test_col 
>>> col.find_one() 
{u'test': u'document', u'x': 1, u'_id': ObjectId('5980a8fd168186e9fb46c638'), u'other': u'value'} 

documentation

0

你缺少的fetchdata函數中的return語句。它應該像

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

,因爲它是不返回任何東西,fetch_from_db沒有得到任何數據,因此給None作爲輸出。

相關問題