use*_*513 20 python mongodb mongoengine flask
在我的烧瓶应用程序中,我使用的是MongoeEgine.我正在尝试将多个文档插入到我的MongoDB中的places集合中.
我的文档类定义为
class places(db.Document):
name = db.StringField(max_length=200, required=True)
loc = db.GeoPointField(required=True)
def __unicode__(self):
return self.name
a=[]
a.append({"name" : 'test' , "loc":[-87,101]})
a.append({"name" : 'test' , "loc":[-88,101]})
x= places(a)
Run Code Online (Sandbox Code Playgroud)
最后一个声明失败了
x= places(a)
TypeError: __init__() takes exactly 1 argument (2 given)
Run Code Online (Sandbox Code Playgroud)
我也尝试将其保存到我的实例中
places.insert(x)
places.save(x)
Run Code Online (Sandbox Code Playgroud)
都失败了.请帮忙.
Ros*_*oss 31
Places.objects.insert没有列出它必须是Places实例的字典.正常操作是创建单个实例Places并保存或插入,例如:
Places(name="test", loc=[-87, 101]).save()
Places(name="test 2", loc=[-87, 101]).save()
Run Code Online (Sandbox Code Playgroud)
但是,如果要进行批量插入,可以传递Places实例列表并调用查询集insert,objects例如:
Places.objects.insert([Places(name="test", loc=[-87, 101]),
Places(name="test 2", loc=[-87, 101])])
Run Code Online (Sandbox Code Playgroud)
您尝试一次初始化多个文档的Document对象.如果你看一下mongoengine的BaseDocument类,你会发现它的__init__方法采用了一个关键字参数的字典,它与一个文档的字段有关.
如果要进行批量保存,则必须创建场所实例列表并将其传递给insert()方法.
a = []
a.append(places(**{"name": 'test', "loc": [-87,101]}))
a.append(places(**{"name": 'test', "loc": [-88,101]}))
x = places.objects.insert(a)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12228 次 |
| 最近记录: |