from pymongo import MongoClient
client = MongoClient("192.168.1.82", 27017)
db = client.local
collection = db.JsonDat
file_object = open('a.txt', 'r')
post=collection.insert()
readingData = True
def readData():
while readingData==True:
line1 = file_object.readline()
line2 = file_object.readline()
line1
line2
if line1 or line2 == "":
readingData = False
dbData = line1 %line2
post(dbData)
print collection.find()
答案 0 :(得分:4)
代码的相关部分是:
post=collection.insert()
你在做什么是不用参数调用insert
方法,而不是将该方法分配给post
。由于insert
method至少将您尝试插入的文档作为其参数,并且您没有传递任何内容,因此它只接收(隐式)对象本身;也就是说,一个参数而不是它期望的至少二个。
删除括号应该有效。
答案 1 :(得分:1)
似乎已经指出您正在尝试在insert方法上创建closure。在这种情况下,我没有看到这一点,因为它永远不会被传递到任何地方和/或需要引用范围之外的东西。只是在你真正想要使用它的地方插入带参数,即你用参数调用post
的地方。
很高兴将已经收到的答案正确投票。但是,我想在此指出您似乎正在访问local
数据库。可以通过检查新的mongo安装并在数据库列表中看到它来找到它。
MongoDB会在您引用它们时自动创建数据库和集合,并提交您的第一个插入。
我无法强调DO NOT USE THE LOCAL DATABASE。它仅供内部使用,只会导致您在此处发布更多问题。