模型的使用及增删改
在配置文件中配置好数据库信息
在应用初始化文件中导入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', '[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()