增加
from db_demo import app,db,User
user = User(mobile=‘13112345678‘,name= ‘小红‘)
db.session.add(user)#这个session是临时保存上传数据用的
db.session.commit()
也可以批量添加
db.session.add_all([user1,user2,user3])
db.session.commit()
@book.route(‘/add_book‘,methods=[‘GET‘,‘POST‘])
def add_book():
if request.method==‘GET‘:
return render_template(‘add.html‘)
else:
name = request.form.get(‘name‘)
author_id = request.form.get(‘author_id‘)
book = Books(name=name,author_id=author_id)
db.session.add(book)
db.session.commit()
return redirect(url_for(‘book.list‘))
删除
第一种
user = User.query.order_by(User.id.desc()).first()
db.session.delete(user)
db.session.commit()
第二种
User.query.filter(User.mobile=‘18512345678‘).delete()
db.session.commit()
修改
第一种
user = User.query.get(1)
user.name = ‘Python‘
db.session.add(user)
db.session.commit()
第二种
User.query.filter_by(id=1).update({‘name‘:‘python‘})
db.session.commit()
@book.route(‘/update/<int:id>‘,methods=[‘GET‘,‘POST‘])
def update_book(id):
if request.method==‘GET‘:
books=Books.query.get(id)
return render_template(‘/update.html‘,books=books)
else:
book = Books.query.get(id)
name = request.form.get(‘name‘)
book.name=name
db.session.commit()
return redirect(url_for(‘book.list‘))
查询
User.query.all()#查询所有 返回列表
User.query.first() #查询第一个 返回对象
User.query.get(2) #根据主键id获取对象 如果没有则返回None
原生SQLAlchemy查询语句
db.session.query(User).all()
db.session.query(User).first()
db.session.query(User).get(2)
过滤查询
filter_by#只能查查询条件是 = 和and的 其他功能要用filter
User.query.filter_by(id=1)
#<flask_sqlalchemy.BaseQuery object at 0x7f6d9edbb630>
User.query.filter_by(id=1).first()
#<User 1>
User.query.filter_by(id=1).all()
#[<User 1>]
User.query.filter_by(mobile=‘13911111111‘, id=1).first() # and关系
两者区别 filter 里面的参数还要加模型类.属性
filter 里的等于是==filter
User.query.filter(User.mobile==‘13911111111‘).first()
User.query.filter(User.id>10).all()
#[<User 11>, <User 12>, <User 13>, <User 14>, <User 15>, <User 16>...]
from sqlalchemy import or_,not_,and_
User.query.filter(or_(User.id>10,User.mobile==‘13173686247‘)).all()
模糊查询
User.query.filter(User.mobile.startswith(‘131‘)).all()
相当于sql语句里的
select * from User where mobile like ‘131%‘;
原文:https://www.cnblogs.com/xuyazhen/p/13949059.html