从PyMongo插入时,数据在mongoDB中不可见

时间:2015-06-16 11:06:17

标签: python mongodb pymongo

我正在尝试从python中插入mongodb集合中的数据,但数据未被记录。我就是这样做的:

from pymongo import MongoClient
import time


class data2db:

    def __init__(self):
        pass
    def enter_data(self,data):
        client = MongoClient('127.0.0.1', 27017)
        db = client.db
        coll=db.Temperature1
        post = {"auth": data ,
            "Time" : time.asctime(time.localtime(time.time()))}
        post_= coll.insert(post)


c=data2db()

c.enter_data("24.3")

当我尝试从另一个方法访问数据时,它返回null。我是这样做的:

client = MongoClient('127.0.0.1', 27017)

db = client.db

coll=db.Temperature1

print coll.find_one({"_id" : 1})

print coll.find()

listed=str(coll.find({"_id" : 1})).split(' ')

listed=listed[len(listed)-1].split('>')[0]

listed={"_id" : "ObjectID(\""+listed+"\")"}

print coll.find_one(listed)'''

print db.command("collstats", "events")

正如您所看到的,我已经以不同的方式尝试过,但无论如何,它都会返回null。如果我尝试访问dbstats,如下所示:

print db.command("dbstats")

我明白了:

{u'extentFreeList': {u'totalSize': 0, u'num': 0}, u'storageSize': 49152, u'ok': 1.0, u'avgObjSize': 64.90566037735849, u'dataFileVersion': {u'major': 4, u'minor': 5}, u'db': u'db', u'indexes': 4, u'objects': 53, u'collections': 6, u'fileSize': 67108864, u'numExtents': 6, u'dataSize': 3440, u'indexSize': 32704, u'nsSizeMB': 16}

甚至没有在mongo命令行上显示集合。急需帮助。

1 个答案:

答案 0 :(得分:1)

您的代码"工作'但我认为你可能复制并粘贴了一些错误的东西。特别是,您要交换使用find()和find_one()。

enter_data()方法调用insert()而不指定_id,因此驱动程序将为您创建一个。该_id最终成为类似于此的ObjectId:

{ "_id" : ObjectId("558019749f43b8c19779c106"), "auth" : "24.3", "Time" : "Tue Jun 16 08:41:24 2015" }

您的代码稍后会调用print coll.find_one({"_id" : 1}),这将产生null,因为发明的_id不会是1。

find()不会返回记录;它返回一个游标。调用打印不会打印内容。试试这个:

for r in coll.find():
    print r

最后,因为db是CLI中的特殊便利变量,所以我避免命名数据库db