Flask——模型的使用及增刪改

codelife發表於2019-08-24

在配置檔案中配置好資料庫資訊

在應用初始化檔案中匯入flask_sqlalchemy裡的SQLAlchemy類,並傳入app初始化

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy(app)

建立模型類

在model目錄下新建User.py檔案,在檔案中匯入db物件建立模型類

from app import db

class User(db.Model):
    __tablename__ = 'user' #資料表名稱

    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(10), unique=True)
    password = db.Column(db.String(32))

def __init__(self, username='', password='',email=''):
    self.username = username
    self.password = password
    self.email = email

為了建立初始資料庫,只需要匯入 db 物件並且呼叫 create_all() 方法來建立表和資料庫:

db.create_all()

新增

向資料庫插入資料分為三個步驟:

  1. 建立 Python 物件
  2. 把它新增到會話
  3. 提交會話

在控制器中引入需要的模型類和db物件

from app.admin.User import User
from app import db

def insert():
    me = User('admin', 'admin@example.com')
    db.session.add(me)
    db.session.commit()

修改

更新資料也用 add() 方法,如果存在要更新的物件,SQLAlchemy 就更新該物件而不是新增。

def update():
    user = User.query.filter_by(username='admin').first()
    user.email = 'test.expample.com'
    #或者定義字典變數,一次更新多個欄位
    data = {'email': 'test.expample.com'}
    db.session.query(User).filter_by(username='admin').update(data)

    db.session.add(user)
    db.session.commit()

如果處理的欄位較多可以使用如下方法

def update():
    param = request.get_json() #獲取前端傳入的json資料
    user = User.query.filter_by(username='admin').first()
    data = user.to_json().update(param) # 需要在User模型類中定義to_json處理方法
    user = User(**data)
    db.session.add(user)
    db.session.commit()

#User.py模型類裡定義to_json方法
def to_json(self):
        _dict = vars(self)
        for i in list(_dict.keys()):
            if i.startswith('_'):
                _dict.pop(i)
        return _dict

刪除

刪除記錄是十分類似的,使用 delete() 代替 add():

def del():
    user = User.query.get(1)
    db.session.delete(user)
    db.session.commit()
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章