MongoEngine,加载模型删除现有文档

时间:2017-05-30 02:53:12

标签: mongodb python-2.7 mongoengine

我很困惑为什么加载mongonengine模型会从我的mongodb数据库中删除该集合。

我在Python2.7应用程序中运行mongoengine(0.10.6)并且必须创建一个脚本来将数据保存到数据库中。

我保存数据的脚本使用此代码(这是一个最小的例子,所以它只是相关信息):

#add_data.py
import mongoengine as mongo
from models import education_models

db_name = 'db_test'
db_url = 'mongodb://localhost:27017'
mongo.connect(db_name, host=db_url)

education_models.EducationProgram(title="Program 1").save()

使用该过程,我可以稍后在程序中查询数据库并检索我的数据。

但是,我有一个单独的过程,大致相同:

#get_data.py
import mongoengine as mongo
from models import education_models

db_name = 'db_test'
db_url = 'mongodb://localhost:27017'
mongo.connect(db_name, host=db_url)

record = education_models.EducationProgram.objects(title="Program 1").first()
print record.title

有一个错误,说Nonetype没有标题。

当我打开mongo shell mongo时,我可以看到我创建的数据库但内部没有任何内容。我可以在我的终端上运行:

show dbs
use db_test
db_test.education_program.findOne({title:"Program 1"})
db_test.education_program.count()

如果我在第二个进程之前运行上述命令,它将返回预期的文档和计数。如果我在第二个过程后运行它,所有文件都消失了。我甚至尝试制作一个脚本,只为已保存的文档加载模型并删除文档。

为什么加载模型会删除数据库中的所有数据实例?

这是education_models的(缩短的)内容:

import mongoengine as mongo

class EducationProgram(mongo.Document): 
    program_title = mongo.StringField(required=True, unique = True) 
    program_code = mongo.StringField() 
    ...

0 个答案:

没有答案