摘要:查詢數(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.config 的 MONGODB_SETTINGS 字典中配置了數(shù)據(jù)庫、主機(jī)和端口。如果數(shù)據(jù)庫需要身份驗證,那我們需要在該字典中添加 username 和 password 參數(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è)置了 collection,ordering 和 strict,其中 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
摘要:環(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 ...
摘要:演示圖社是基于的圖床和圖片瀏覽網(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 的圖床和圖片瀏...
摘要:演示圖社是基于的圖床和圖片瀏覽網(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 的圖床和圖片瀏...
摘要:程序中最常用的莫過于關(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ù)...
摘要:帶附件的郵件有時候,我們發(fā)郵件的時候需要添加附件,比如文檔和圖片等,這也很簡單,代碼如下郵件服務(wù)器地址郵件服務(wù)器端口啟用上面的代碼中,我們通過打開了本機(jī)的某張圖片,然后通過方法將附件內(nèi)容添加到對象。 前往本文博客 簡介 給用戶發(fā)送郵件是 Web 應(yīng)用中最常見的任務(wù)之一,比如用戶注冊,找回密碼等。Python 內(nèi)置了一個 smtplib 的模塊,可以用來發(fā)送郵件,這里我們使用 Flask...
閱讀 1437·2021-11-25 09:43
閱讀 2580·2021-09-24 10:30
閱讀 3659·2021-09-06 15:02
閱讀 3593·2019-08-30 15:55
閱讀 3300·2019-08-30 15:53
閱讀 1693·2019-08-30 15:52
閱讀 2142·2019-08-30 14:21
閱讀 2010·2019-08-30 13:55