模型的使用及增删改

flask python
创建于:2019年06月20日

在配置文件中配置好数据库信息

在应用初始化文件中导入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', '[email protected]')
    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()