我很困惑为什么加载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()
...