我正在尝试制作一个简单的博客,其中我正在尝试从数据库中插入和获取数据。插入数据工作正常,但获取数据,无论是.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)
您在 fetchdata 函数中缺少返回语句。 它应该像
@staticmethod
def fetchdata(collection):
return Database.DATABASE[collection].find_one()
由于它没有返回任何内容,fetch_from_db
没有获得任何数据,因此None
作为输出。
这是一个有据可查的问题,示例代码:
>>> 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'}
文档