app=Flask(name,static_folder=“static”,static_url_path="/aaa",template_folder=“templates”)
__name__实际上是有值的,name=main,指的是该模块所在的目录
static_folder = “static”,设置静态资源夹的名字是static
static_url_path,设置访问静态资源的url前缀,若不存在该项,默认为static
template_folder,存放html模板的模板夹名字
app.run(host=127.0.0.1,port=5008,debug=True)
host=127.0.0.1 设置访问flask_web应用的ip是127.0.0.1
port=5008设置访问flask_web应用的端口是5008
debug=True设置调试模式打开
补充:print(app.url_map) 打印路由和视图函数的对应关系
查询 1.FLASK-SQLALCHEMY - 查询 1.基于 db.session 进行查询 1.db.session.query() 该函数会返回一个Query对象,类型为 BaseQuery,包含了指定实体类对应的表中所有的数据
该函数也可以接受多个参数,参数表示的是要查询哪个实体 2.查询执行函数 目的:在查询的基础上得到最终想要的结果 语法:db.session.query(...).查询执行函数()也可以直接使用定义的类来查询: 例:Users.query.all() Users.query.first() 。。。。。
函数 说明 all() 以列表的方式返回查询的所有结果 first() 返回查询中的第一个结果,如果没有结果,则返回None first_or_404() 返回查询中的第一个结果,如果没有结果,则终止并返回404 count() 返回查询结果的数量get() 根据主键获取到对象,
3.查询过滤器函数 作用:在查询的基础上,筛选部分列出来 语法:db.session.query(..).过滤器函数().查询执行函数() 过滤器函数: 函数 说明 filter() 按指定条件进行过滤(多表,单表,定值,不定值..) filter_by() 按等值条件进行过滤 limit() 按限制行数获取 order_by() 根据指定条件进行排序 group_by() 根据指定条件进行分组offset() 跳过几条开始查,例:db.session.query.offset(2).all() #跳过前两条,开始查
db.session.query.offset(1).limit(2).all() # 跳过一条,取出两条数据 User.query.order_by(User.id.desc()).all() # 按照id进行降序的方式,查出,默认升序,函数asc()详解: 1.filter() 1. 查询年龄 大于 30 的Users 的信息 db.session.query(Users).filter(Users.age>30).all() 注意:条件必须由 模型类.属性 来组成 2.查询年龄 大于 30 且 id 大于5 的Users的信息 db.session.query(Users).filter(Users.age>30,Users.id > 5).all() 3.查询年龄大于30 或者 id大于5 的Users的信息 注意:查询 或 的操作,要借助 or_(), or_() 函数需要导入 from sqlalchemy import or_ db.session.query(Users).filter(or_(条件1,条件2)).all()
4.查询id等于5的Users的信息 注意:等值判断必须使用 == db.session.query(Users).filter(Users.id==5).first() 5.查询 email 中包含 'w' 的users的信息 - 模糊查询 like db.session.query(Users).filter(Users.email.like('%w%')).all() 6.查询 id 在 [1,2,3] 之间的 Users 的信息 db.session.query(Users).filter(Users.id.in_([1,2,3])).all() 2.filter_by() 1.查询 id=5的Users的信息 db.session.query(Users).filter_by(id=5).first()写入多个条件: db.session.query(Users).filter_by(id=5,name=“wht”).first()
3.limit() 1.在整个查询结果中获取前5条数据 db.session.query(Users).limit(5).all()db.session.query(Users).limit(5).all() db.session.query(Users).limit(3).offset(1).all() offset() 表示行数偏移量,这里就是从多少开始查询
4.order_by() 1.对Users表中所有的数据按id倒序排序 db.session.query(Users).order_by('id desc').all()desc 表示倒序,默认为升序 若指定的字段中有重复的,还可以指定二级排序 db.session.query(Users).order_by(‘id desc,age asc’).all() 按照id倒序排列,年龄升序排列
db.session.query(Users).order_by(Users.id.desc()).all() 注意:新版本
5.group_by()按照年龄进行分组 db.session.query(Users.age).group_by(‘age’).all()
from sqlalchemy import func db.session.query(Users.age,func.count(Users.age)).group_by(Users.age).all()
user = Users.query.filter(Users.id>3).all() print(users)
2.FLASK-SQLALCHEMY - 删除 和 修改 1.删除 步骤1.查询出要删除的实体 user=db.session.query(Users).filter_by(id=5).first() 步骤2.根据所提供的删除方法将信息删除 db.session.delete(user) @app.route(’/delete_user’) def delete_user(): user = Users.query.filter_by(id=5).first() db.session.delete(user) db.session.commit() return ‘Delete OK’
2.修改 将 id 为1 的用户的 username 改为 Wang WC ,年龄改为 40 步骤1.查 user = Users.query.filter_by(id=1).first() 步骤2.改 user.username = "Wang WC" user.age = 40 步骤3.保存 db.session.add(user)这一步因为有id值,所以保证了是更新回去,而不是增加一条
@app.route(’/update_user’) def update_user(): user = Users.query.filter_by(id=1).first() user.username = “Wang WC” user.age = 40 db.session.add(user) return “Update OK”
User.query.filter_by(name=“zhou”).update({“name”:“python”,“email”:“python@163.com”}) db.session.commit()