即使db显示数据,PyMongo也会返回None

时间:2017-08-01 16:02:09

标签: python mongodb pymongo

我正在尝试创建一个简单的博客,其中我尝试插入并从数据库中获取数据。插入数据工作正常但是获取数据,.find().find_one()都返回None,即使shell中执行的相同语句有效。

我正在尝试使用以下一系列代码获取三个文件中的数据

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 个答案:

答案 0 :(得分:0)

您缺少fetchdata函数中的return语句。它应该像

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

因为它没有返回任何内容,fetch_from_db没有获取任何数据,因此将None作为输出。

答案 1 :(得分:-1)

这是一个记录良好的问题,示例代码:

>>> 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'}

Boost.Variant