Flask-MongoAlchemy中文文档

来源:互联网 发布:血观音 知乎 编辑:程序博客网 时间:2024/05/17 08:22

安装

您可以轻松地使用PIP或easy_install的安装:

$ [sudo] pip install Flask-MongoAlchemy$ [sudo] easy_install Flask-MongoAlchemy

如果你愿意,你可以使用最新git版本

$ git clone https://github.com/cobrateam/flask-mongoalchemy.git$ cd flask-mongoalchemy$ [sudo] python setup.py develop

请确认您已经安装MongoDB的使用它。

用法

你需要先创建一个MongoAlchemy对象,并用它来创建数据库文件。下面是一个完整的例子:

from flask import Flaskfrom flaskext.mongoalchemy import MongoAlchemyapp = 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()

现在你可以创建Author和Book:

from application import Author, Bookmark_pilgrim = Author(name='Mark Pilgrim')dive = Book(title='Dive Into Python', author=mark_pilgrim, year=2004)

然后保存

mark_pilgrim.save()dive.save()

如果你改变了原来的文件内容,你可以调用save()

mark_pilgrim.name = 'Mark Stalone'mark_pilgrim.save()

可以调用其remove()方法从数据库中删除一个文件:

dive.remove()

另一个基本查询文件操作。每个文档都有一个查询类的属性。使用起来非常简单:

mark = Author.query.get('76726')mark.name = 'Mark Pilgrim'mark.save()


您还可以使用filter()过滤的方法,而不是get()方法:

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


配置值

下面的Flask-MongoAlchemy的配置值:

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

API

您可以使用应用程序实例,或调用一个init_app()方法的一个MongoAlchemy的实例对象。这个例子的应用程序实例化:

app = Flask(__name__)db = MongoAlchemy(app)

这里调用init_app的()方法:

db = MongoAlchemy()def init_app():    app = Flask(__name__)    db.init_app(app)    return app

init_app(app)
该回调函数可以用来初始化MongoDB。切勿在未初始化的时候使用,这样会泄漏数据库。


query=None
query_class的一个实例。用于查询数据库。


query_class
查询类的使用。查询属性是这个类的一个实例。默认情况下用于BaseQuery。


别名BaseQuery


remove(safe=None)
删除数据库。


可选的安全参数是一个布尔值,指定是否应该等待操作完成remove方法。


save(safe=None)
保存数据库。


可选的安全参数是一个布尔值,指定是否应该等待操作完成remove方法。


这个类提供了一些方法,并可以扩展到用户文档提供了一个自定义的查询类。


这里举个例子:

from flaskext.mongoalchemy import BaseQueryfrom application import dbclass 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()

注意:如果要扩展BaseQuery写一个__init__方法,你应该总是通过super关键字调用这个类的__init__。
class MyQuery(BaseQuery):    def __init__(self, *args, **kwargs):        super(MyQuery, self).__init__(*args, **kwargs)

first_or_404()
如果结果不包含任何数据将返回的第一个结果查询,或中止

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
当前页码

原创粉丝点击