国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Flask 插件系列 - Flask-MongoEngine

Backache / 3341人閱讀

摘要:查詢數(shù)據(jù)查詢所有數(shù)據(jù)使用方法查詢滿足某些條件的數(shù)據(jù)其中,方法會取出滿足條件的第條記錄。本文由發(fā)表于個人博客,采用自由轉(zhuǎn)載保持署名非商用禁止演繹協(xié)議發(fā)布。非商業(yè)轉(zhuǎn)載請注明作者及出處。本文標(biāo)題為插件系列本文鏈接為更多閱讀

簡介

MongoDB 是一個文檔型數(shù)據(jù)庫,是 NoSQL (not only SQL) 的一種,具有靈活、易擴(kuò)展等諸多優(yōu)點,受到許多開發(fā)者的青睞。MongoEngine 是一個用來操作 MongoDB 的 ORM 框架,如果你不知道什么是 ORM,可以參考 Flask-SQLAlchemy 一節(jié)。在 Flask 中,我們可以直接使用 MongoEngine,也可使用 Flask-MongoEngine ,它使得在 Flask 中使用 MongoEngine 變得更加簡單。

安裝

使用 pip 安裝,如下:

$ pip install flask-mongoengine
使用

在使用之前,請確保 mongo 服務(wù)已經(jīng)開啟。

配置

我們需要配置 MongoDB 的相關(guān)參數(shù),以便我們能訪問數(shù)據(jù)庫。

# -*- coding: utf-8 -*-

from flask import Flask
from flask_mongoengine import MongoEngine

app = Flask(__name__)
app.config["MONGODB_SETTINGS"] = {
    "db": "test",
    "host": "127.0.0.1",
    "port": 27017
}

db = MongoEngine(app)

上面的代碼中,我們在 app.configMONGODB_SETTINGS 字典中配置了數(shù)據(jù)庫、主機(jī)和端口。如果數(shù)據(jù)庫需要身份驗證,那我們需要在該字典中添加 usernamepassword 參數(shù),比如:

app.config["MONGODB_SETTINGS"] = {
  "db": "test", 
  "username":"admin", 
  "password":"12345"
}

另外,上面的配置也可以改成下面的方式:

app.config["MONGODB_DB"] = "test"
app.config["MONGODB_HOST"] = "127.0.0.1"
app.config["MONGODB_PORT"] = 27017
app.config["MONGODB_USERNAME"] = "admin"
app.config["MONGODB_PASSWORD"] = "12345"

如果我們想在應(yīng)用初始化前配置數(shù)據(jù)庫,比如使用工廠方法,可以類似這樣做:

from flask import Flask
from flask_mongoengine import MongoEngine
db = MongoEngine()

...

app = Flask(__name__)
app.config.from_pyfile("config.json")
db.init_app(app)
定義數(shù)據(jù)模型

接下來,我們需要定義數(shù)據(jù)模型。這里,我們以一個 Todo 數(shù)據(jù)庫為例,數(shù)據(jù)模型定義如下:

from datetime import datetime

class Todo(db.Document):
    meta = {
        "collection": "todo",
        "ordering": ["-create_at"],
        "strict": False,
    }

    task = db.StringField()
    create_at = db.DateTimeField(default=datetime.now)
    is_completed = db.BooleanField(default=False)

在上面的代碼中,我們定義了一個 Todo 類,meta 字典設(shè)置了 collectionorderingstrict,其中 ordering 的值可以指定你的 QuerySet 的默認(rèn)順序,strict 的值指定是否使用嚴(yán)格模式,默認(rèn)值是 True,也就是使用嚴(yán)格模式,這就意味著如果數(shù)據(jù)庫的記錄如果存在某些字段沒有在我們的數(shù)據(jù)模型中聲明,那程序在運行時會產(chǎn)生一個 FieldDoesNotExist 的錯誤。因此,我們的數(shù)據(jù)模型定義最好跟記錄中的字段保持一致。

查詢數(shù)據(jù)

查詢所有數(shù)據(jù)使用 all() 方法

todos = Todo.objects().all()

查詢滿足某些條件的數(shù)據(jù)

task = "cooking"
todo = Todo.objects(task=task).first()

其中,first() 方法會取出滿足條件的第 1 條記錄。

添加數(shù)據(jù)

添加數(shù)據(jù)使用 save() 方法

todo1 = Todo(task="task 1", is_completed=False)
todo1.save()
數(shù)據(jù)排序

排序使用 order_by() 方法

todos = Todo.objects().order_by("create_at")
更新數(shù)據(jù)

更新數(shù)據(jù)需要先查找數(shù)據(jù),然后再更新

task = "task 1"
todo = Todo.objects(task=task).first()  # 先查找
if not todo:
    return "the task doesn"t exist!"

todo.update(is_completed=True)   # 再更新
刪除數(shù)據(jù)

刪除數(shù)據(jù)使用 delete() 方法:先查找,再刪除

task = "task 6"
todo = Todo.objects(task=task).first()  # 先查找
if not todo:
    return "the task doesn"t exist!"

todo.delete()   # 再刪除
分頁

分頁可結(jié)合使用 skip()limit() 方法

skip_nums = 1
limit = 3

todos = Todo.objects().order_by(
    "-create_at"
).skip(
    skip_nums
).limit(
    limit
)

使用 paginate() 方法

def view_todos(page=1):
    todos = Todo.objects.paginate(page=page, per_page=10)

本文完整的代碼在這里。

本文由 funhacks 發(fā)表于個人博客,采用 Creative Commons BY-NC-ND 4.0(自由轉(zhuǎn)載-保持署名-非商用-禁止演繹)協(xié)議發(fā)布。
非商業(yè)轉(zhuǎn)載請注明作者及出處。商業(yè)轉(zhuǎn)載請聯(lián)系作者本人。
本文標(biāo)題為: Flask 插件系列 - Flask-SQLAlchemy
本文鏈接為: https://funhacks.net/2016/11/...

更多閱讀

flask-mongoengine

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/44236.html

相關(guān)文章

  • 關(guān)于flask-mongoengine 庫的安裝

    摘要:環(huán)境或使用以下命令安裝會出現(xiàn)以下錯誤定為中的錯誤行是在讀取文件時發(fā)生錯誤,此文件為,其為幫助說明文檔。粗暴一點,將其中的內(nèi)容刪除。上下載源碼包。運行如下命令安裝 環(huán)境: windows 10、python 3.5、flask-mongoengine 0.8.2或0.9.0 使用以下命令安裝 flask-mongoengine pip install flask-mongoengine ...

    alaege 評論0 收藏0
  • Python Flask 圖床(TUSHE.ORG)開源

    摘要:演示圖社是基于的圖床和圖片瀏覽網(wǎng)站源碼,也可以用作套圖網(wǎng)站。網(wǎng)站采用作為數(shù)據(jù)庫,圖片也儲存于。特點注冊用戶可以認(rèn)領(lǐng)未注冊用戶的圖片,進(jìn)行相關(guān)信息編輯。部署要求相關(guān)的支持見部署方法提供了配合的配置文件。 TUSHE 演示:http://tushe.org GitHub:https://github.com/ericls/tushe 圖社(TUSHE)是基于 FLask 的圖床和圖片瀏...

    wums 評論0 收藏0
  • Python Flask 圖床(TUSHE.ORG)開源

    摘要:演示圖社是基于的圖床和圖片瀏覽網(wǎng)站源碼,也可以用作套圖網(wǎng)站。網(wǎng)站采用作為數(shù)據(jù)庫,圖片也儲存于。特點注冊用戶可以認(rèn)領(lǐng)未注冊用戶的圖片,進(jìn)行相關(guān)信息編輯。部署要求相關(guān)的支持見部署方法提供了配合的配置文件。 TUSHE 演示:http://tushe.org GitHub:https://github.com/ericls/tushe 圖社(TUSHE)是基于 FLask 的圖床和圖片瀏...

    Achilles 評論0 收藏0
  • Flask 插件系列 - Flask-SQLAlchemy

    摘要:程序中最常用的莫過于關(guān)系型數(shù)據(jù)庫了,也稱數(shù)據(jù)庫。對象是類的實例,表示程序使用的數(shù)據(jù)庫。本文由發(fā)表于個人博客,采用自由轉(zhuǎn)載保持署名非商用禁止演繹協(xié)議發(fā)布。非商業(yè)轉(zhuǎn)載請注明作者及出處。本文標(biāo)題為插件系列本文鏈接為更多閱讀 簡介 Web 開發(fā)中,一個重要的組成部分便是數(shù)據(jù)庫了。Web 程序中最常用的莫過于關(guān)系型數(shù)據(jù)庫了,也稱 SQL 數(shù)據(jù)庫。另外,文檔數(shù)據(jù)庫(如 mongodb)、鍵值對數(shù)據(jù)...

    LoftySoul 評論0 收藏0
  • Flask 插件系列 - Flask-Mail

    摘要:帶附件的郵件有時候,我們發(fā)郵件的時候需要添加附件,比如文檔和圖片等,這也很簡單,代碼如下郵件服務(wù)器地址郵件服務(wù)器端口啟用上面的代碼中,我們通過打開了本機(jī)的某張圖片,然后通過方法將附件內(nèi)容添加到對象。 前往本文博客 簡介 給用戶發(fā)送郵件是 Web 應(yīng)用中最常見的任務(wù)之一,比如用戶注冊,找回密碼等。Python 內(nèi)置了一個 smtplib 的模塊,可以用來發(fā)送郵件,這里我們使用 Flask...

    ingood 評論0 收藏0

發(fā)表評論

0條評論

Backache

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<