天天向上,

导航

flask CRUD

增删改查

增加

  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'))

img

删除
第一种

  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()

img

修改
第一种

    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'))

img

查询

  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)

img

过滤查询

  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%‘;

posted on 2020-11-09 20:21  天天向上,  阅读(103)  评论(0编辑  收藏  举报