MongoEngine – 扩展
MongoEngine与以下库完美结合 –
marshmallow_mongoengine
marshmallow是一个独立于ORM/ODM/框架的序列化/反序列化库,用于将复杂的数据类型,如对象,转换为本地Python数据类型。使用MongoEngine的这个扩展,我们可以轻松地进行序列化/反序列化操作。
首先,像往常一样创建一个Document类,如下所示
import mongoengine as me
class Book(me.Document):
title = me.StringField()
然后用下面的代码生成marshmallow模式-
from marshmallow_mongoengine import ModelSchema
class BookSchema(ModelSchema):
class Meta:
model = Book
b_s = BookSchema()
使用代码保存一个文件:
book = Book(title='MongoEngine Book').save()
并使用dump(0和load()进行序列化/反序列化,代码如下 −
data = b_s.dump(book).data
b_s.load(data).data
Flask-MongoEngine
这是一个Flask扩展,提供与MongoEngine的集成。你的应用程序的MongoDB数据库的连接管理可以通过这个库轻松处理。你也可以使用WTForms作为模型的形式。
安装完flask-mongoengine包后,用以下设置初始化flask应用程序
from flask import Flask
from flask_mongoengine import MongoEngine
app = Flask(__name__)
app.config['MONGODB_SETTINGS'] = {
'db': 'mydata',
'host': 'localhost',
'port':27017
}
db = MongoEngine(app)
然后用下面的代码定义一个Document子类–
class book(me.Document):
name=me.StringField(required=True)
声明一个上述类的对象,并在访问一个特定路线时调用save()方法。
@app.route('/')
def index():
b1=book(name='Introduction to MongoEngine')
b1.save()
return 'success'
extras-mongoengine
这个扩展包含额外的字段类型和任何其他的向导。
Eve-MongoEngine
Eve是一个开源的Python REST API框架,为人类设计。它允许毫不费力地建立和部署高度可定制的、功能齐全的RESTful Web服务。
Eve由Flask和Cerberus驱动,它为MongoDB数据存储提供本地支持。Eve-MongoEngine提供MongoEngine与Eve的集成。
使用下面的代码安装和导入扩展-
import mongoengine
from eve import Eve
from eve_mongoengine import EveMongoengine
配置设置并初始化Eve实例。
my_settings = {
'MONGO_HOST': 'localhost',
'MONGO_PORT': 27017,
'MONGO_DBNAME': 'eve_db'
app = Eve(settings=my_settings)
# init extension
ext = EveMongoengine(app)
定义一个文档类,如下图所示
class Person(mongoengine.Document):
name = mongoengine.StringField()
age = mongoengine.IntField()
添加模型并运行应用程序,最后使用以下代码 –
ext.add_model(Person)
app.run()
Django-MongoEngine
这个扩展旨在将MongoEngine与Django API集成,Django是一个非常流行的Python网络开发框架。这个项目仍在开发中。