您可以轻松地使用PIP或easy_install的安装:
$ [sudo] pip install Flask-MongoAlchemy
$ [sudo] easy_install Flask-MongoAlchemy
$ git clone https://github.com/cobrateam/flask-mongoalchemy.git
$ cd flask-mongoalchemy
$ [sudo] python setup.py develop
你需要先创建一个MongoAlchemy对象,并用它来创建数据库文件。下面是一个完整的例子:
from flask import Flask
from flaskext.mongoalchemy import MongoAlchemy
app = Flask(__name__)
app.config['MONGOALCHEMY_DATABASE'] = 'library'
db = MongoAlchemy(app)
class Author(db.Document):
name = db.StringField()
class Book(db.Document):
title = db.StringField()
author = db.DocumentField(Author)
year = db.IntField()
from application import Author, Book
mark_pilgrim = Author(name='Mark Pilgrim')
dive = Book(title='Dive Into Python', author=mark_pilgrim, year=2004)
mark_pilgrim.save()
dive.save()
mark_pilgrim.name = 'Mark Stalone'
mark_pilgrim.save()
dive.remove()
mark = Author.query.get('76726')
mark.name = 'Mark Pilgrim'
mark.save()
mark = Author.query.filter(Author.name == 'Mark Pilgrim').first()
mark.name = 'Steve Jobs'
mark.save()
这里可以使用的身份验证连接到一个MongoDB服务器。认证可以是基于服务器或基于数据库。
默认方式是使用基于服务器的身份认证,使用基于数据库的认证,你需要关闭的配置的值MONGOALCHEMY_SERVER_AUTH的(见下一节更详细的配置值):
app.config['MONGOALCHEMY_SERVER_AUTH'] = False
MONGOALCHEMY_DATABASE 数据库的名称。
MONGOALCHEMY_SERVER MongoDB服务器。默认值:localhost
MONGOALCHEMY_PORT MongoDB服务器监听端口。默认值:27017
MONGOALCHEMY_USER 数据库连接的用户。默认值:None
MONGOALCHEMY_PASSWORD 数据库连接的密码。默认值:None
MONGOALCHEMY_SAFE_SESSION 在安全模式下使用session。当在安全模式下,所有的方法,如保存,删除等操作完成。默认值:False
MONGOALCHEMY_OPTIONS MongoDB服务器连接时,额外的选项。例如:safe=true 默认值:None
MONGOALCHEMY_SERVER_AUTH 布尔值,表示使用基于服务器的身份验证或无。当设置为False,将使用基于数据库的认证。默认值:True
app = Flask(__name__)
db = MongoAlchemy(app)
db = MongoAlchemy()
def init_app():
app = Flask(__name__)
db.init_app(app)
return app
query=None
query_class的一个实例。用于查询数据库。
query_class
查询类的使用。查询属性是这个类的一个实例。默认情况下用于BaseQuery。
别名BaseQuery
remove(safe=None)
删除数据库。
可选的安全参数是一个布尔值,指定是否应该等待操作完成remove方法。
save(safe=None)
保存数据库。
可选的安全参数是一个布尔值,指定是否应该等待操作完成remove方法。
这个类提供了一些方法,并可以扩展到用户文档提供了一个自定义的查询类。
这里举个例子:
from flaskext.mongoalchemy import BaseQuery
from application import db
class MyCustomizedQuery(BaseQuery):
def get_johns(self):
return self.filter(self.type.first_name == 'John')
class Person(db.Document):
query_class = MyCustomizedQuery
name = db.StringField()
johns = Person.query.get_johns().first()
class MyQuery(BaseQuery):
def __init__(self, *args, **kwargs):
super(MyQuery, self).__init__(*args, **kwargs)
get(mongo_id)
如果没有找到,返回一个Document实例mongo_id“或”None“
get_or_404(mongo_id)
像get()方法,但如果没有找到,而不是返回None中止与404
PAGINATE(page,per_page=20,error_out= True)
从页返回per_page项默认情况下,它会中止与404如果没有被发现,并大于1。这种行为可以被禁用通过设置假error_out。
class flaskext.mongoalchemy.Pagination(query,per_page,total,items)
内部辅助类返回由PAGINATE()。
has_next()
返回 True,如果存在下一个页面。
has_prev()
返回True,如果前一个页面存在。
items=None
项目为当前页的列表
next(error_out=False)
下页返回分页对象。
next_num
的翻页数。
page=None
当前页码