前言
在实际项目中,我们有时需要存储一些json类型的字符串,这种类型的数据写入到关系型数据库,会比较麻烦。一般我们将其写入到非关系型数据库中,例如MongoDB,同样我们也可以用操作关系型数据库的ORM方式操作MongoDB。
1: 配置文件的(settings.py)
MONGODB_SETTINGS = [{'db': 'api_params', 'host': MONGO_DB, 'port': 27017, "connect": True,
'username': 'root',
'password': 'root',
'authentication_source': 'admin'},
# 数据校验结果存放在check_data库中
{'db': 'check_data', 'host': MONGO_DB, 'port': 27017, "connect": True,
'username': 'root',
'password': 'root',
'authentication_source': 'admin', "alias": "task_alias"}]
我们可以通过起别名的方式添加多个mongodb的集合。
2: 初始化(factory.py)
from flask_mongoengine import MongoEngine
mongodb = MongoEngine()
mongodb.init_app(app)
3: model层(model.py)
from app.main.extensions import mongodb
import datetime
class CaseData(mongodb.Document):
# model层
_id = mongodb.StringField(required=True, max_length=200)
app_data = mongodb.StringField(required=True)
rec_data = mongodb.StringField(required=True)
current_time = mongodb.DateTimeField(default=datetime.datetime.now(), required=False)
meta = {"db_alias": "task_alias_case"}
def to_json(self):
return {"batch_id": self._id,
"app_data": self.app_data,
"rec_data": self.rec_data,
"current_time": self.current_time
}
4: 对mongodb数据库的操作
mongodb_object = CaseData.objects(_id=1).first() # 查询mongodb数据对象
cache_data = {"_id":1, "app_data": 123, "rec_data": 1234}
CaseData(**cache_data).save() # 存储数据
mongodb_object.update(app_data ="要修改的数据") # 修改数据
官方文档: https://pypi.org/project/flask-mongoengine/