成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Flask 插件系列 - Flask-MongoEngine

Backache / 3352人閱讀

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

簡(jiǎn)介

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

安裝

使用 pip 安裝,如下:

$ pip install flask-mongoengine
使用

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

配置

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

# -*- 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)

上面的代碼中,我們?cè)?app.configMONGODB_SETTINGS 字典中配置了數(shù)據(jù)庫(kù)、主機(jī)和端口。如果數(shù)據(jù)庫(kù)需要身份驗(yàn)證,那我們需要在該字典中添加 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ù)庫(kù),比如使用工廠方法,可以類似這樣做:

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ù)模型。這里,我們以一個(gè) Todo 數(shù)據(jù)庫(kù)為例,數(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)

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

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

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

todos = Todo.objects().all()

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

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

其中,first() 方法會(huì)取出滿足條件的第 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()   # 再刪除
分頁(yè)

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

更多閱讀

flask-mongoengine

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/44236.html

相關(guān)文章

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

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

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

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

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

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

    Achilles 評(píng)論0 收藏0
  • Flask 插件系列 - Flask-SQLAlchemy

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

    LoftySoul 評(píng)論0 收藏0
  • Flask 插件系列 - Flask-Mail

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

    ingood 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<