在配置檔案中配置好資料庫資訊
在應用初始化檔案中匯入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()
新增
向資料庫插入資料分為三個步驟:
- 建立 Python 物件
- 把它新增到會話
- 提交會話
在控制器中引入需要的模型類和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 協議》,轉載必須註明作者和本文連結