iT邦幫忙

DAY 3
0

Play with Flask And MongoDB系列 第 3

Day 3 - Mongoengine

  • 分享至 

  • xImage
  •  

今天來談談資料庫吧!

我選用MongoDB,

因為在目前興起的NoSQL中MongoDB畢竟還是大宗,

我選用的lib是Flask-mongoengin,

為什麼我要使用Flask-mongoengin 呢?

  1. 還是在於它和Flask-WTF的配合十分的好
  2. 可以依照不同的Data Model 作設計
  3. 可以對各欄位作不同的簡單的資料類別(長度)設定

先看看簡單的Sample:

from app import db
from flask.ext.login import UserMixin

class User(db.Document, UserMixin):
    account = db.StringField(required=True)
    pwd = db.StringField(required=True)

def get_id(self):
    return unicode(self.id)

因為NoSQL的特點之一欄位並不需要事先定義,

這是一種優點也是缺點,

畢竟資料庫的資料還是需要一些基本的驗證與檢查,

而Mongoengine就提供了這些設定與檢查,

因為儲存的是BJSON(Binary Json),

所以就有了Embedded Data Models

而Mongoengine 在設計schema的時候,

可以針對Embedded Data Models作設計,

from app import db
from flask.ext.login import UserMixin


class User(db.EmbeddedDocument):
    account = db.StringField(required=True)
    pwd = db.StringField(required=True)


class Users(db.Document, UserMixin):
    user = db.EmbeddedDocumentField('User')
    name = db.StringField()

class Login(db.Document):
    user = db.EmbeddedDocumentField('User')
    logintime = db.DateTimeField(required=True)

def get_id(self):
    return unicode(self.id)

另外還有一個就是與Flask-WTF的配合上相當的高,

Form表單與後端資料庫欄位名稱都可以設計作Mapping,

在開發上的難度大大降低。

另外在每一個Class可以依照需求寫一些Function來配合使用,

上例是在做Flask-login 的時候回傳的User ObjId值,

彈性大大的提昇。

今天先講到這吧!

待續........


上一篇
Day2 - Flask API
下一篇
Day 4 - 目錄架構
系列文
Play with Flask And MongoDB11
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言