flask-ORM模型用法
什么是ORM?
ORM---Object Relationship Mapping对象关系映射.
用python面向对象方式操作关系型数据库的技术.
ORM模型与数据库中的表一一对应.ORM模型中的每个类属性对应表中的每个字段.
用ORM操作数据库优点:
- 开发效率高
- 安全性比直接操作原生sql高
- 灵活性强
创建ORM模型
# ORM模型类
from exts import db # db是一个SQLAlchemy对象绑定app
class User(db.Model):
__tablename__='user'
id=db.Column(db.Integer,primary_key=True,autoincrement=True)
username=db.Column(db.String(100))
password=db.Column(db.String(100))
# db.create_all() # 创建所有ORM类对应的表
# 一般不这么创建表.通过迁移命令生成表.
ORM增删改查操作
示例代码
# blueprint/crud.py
from flask import render_template,Blueprint,redirect
from exts import db
from models import User
bp=Blueprint('db',__name__,url_prefix='/db')
@bp.route('/insert')
def insertItem():
user1=User(username='zh3',password='123')
user2=User(username='li4',password='abc')
user3=User(username='wa5',password='888')
db.session.add(user1) # 插入一条数据到数据库
db.session.add(user2)
db.session.add(user3)
db.session.commit()
print('添加成功')
return redirect('/db/userlist')
@bp.route('/userlist')
def userlist():
users=User.query.all() # 查询表中记录
# 查询相关方法: all(),first(),one(),get(primariy_key),exists(),count()
# User.query.filter(User.username=='zh3').delete()
# User.query.filter_by(User.username=='zh3').delete()
return render_template('user_list.html', userList=users)
@bp.route('/clear')
def clear():
userList=User.query.all()
for user in userList:
db.session.delete(user) # 删
db.session.commit()
return '用户表已清空!'
@bp.route('/update')
def update():
zh3=User.query.filter(User.username=='zh3').first()
zh3.username='法外狂徒'
db.session.commit()
return redirect('/db/userlist')
ORM模型迁移
flask db init # 初始化迁移环境
flask db migrate -m '备注信息' # 生成迁移脚本
flask db upgrade # 执行迁移脚本