zoukankan      html  css  js  c++  java
  • flask 框架 转载:https://cloud.tencent.com/developer/article/1465968

    特点总结:

    类名称---->数据库表名

    类属性---->数据库字段

    类的对象----->数据库表中的一行一行数据

    3.ORM操作注意(理解)

    1/因为SQLALChemy去app身上读取了配置信息,所以需要设置到app.config身上

    2/数据库的链接信息

    如果安装的是flask_mysqldb,那么连接信息:

    mysql://root(用户名):mysql(密码)@127.0.0.1(ip地址):3306(端口号)/data36(数据库名字)

    如果安装的是flask_pymysql,那么连接信息:

    mysql+pymysql://root(用户名):mysql(密码)@127.0.0.1(IP地址):3306(端口号)/data36(数据库名字)

    3/编写的模型类必须继承自db.Model才能被映射

    4/如果不指定表名称,默认生成的就是模型类的小写,如果需要自己指定表名称使用__tablename__="表名称"

    5/删除继承自db.Model的表db.drop_all()

    6/ORM在进行映射的时候不能生成数据库的,我们需要在数据库中建立相对应的数据库.然后再进行ORM操作.

    4.1增删改

    全部都是使用db.session操作

    常见方法:

    db.session.add(obj)添加单个对象

    db.session.delete(obj)删除单个对象

    db.session.add_all([obj1,obj2])增加多个对象

    db.session.commit()提交会话

    db.drop_all()删除继承自db.Model的所有表

    db.create_all()创建继承自db.Model的所有表

    对象.属性 = 值 修改数据

    其他:

    db.session.rollback()回滚

    db.session.remove()移除会话

     

    查询语句:特点:模型.query

    查询所有用户数据User.query.all()

    查询有多少个用户User.query.count()

    查询第1个用户User.query.all()[0]

    User.query.filter(not_(User.name == 'wang')).all()

    User.query.filter(or_(User.password == '123456',User.email.endswith('itheima.com'))).all()

    User.query.filter(User.id.in_([1,3,5,7,9])).all()

    查询所有用户数据,并以邮箱排序User.query.order_by(User.email).all()User.query.order_by(User.email.desc()).all()

    每页3个,查询第2页的数据paginate = User.query.paginate(page, per_page,Error_out)paginate = User.query.paginate(2,3,False)page: 哪一个页per_page: 每页多少条数据Error_out: False 查不到不报错

    paginate(page,per_page,Error_out)page表示要查询的页数,per_page表示每页有多少条数据,Error_out建议写成False,查不到不会报错

    paginate.pages总页数

    paginate.page当前页

    paginate.items当前页数所有的对象

    8.数据库懒查询lazy(了解)

    解释:一旦使用了relationship和backref,那么系统会自动做子查询

    子查询(subquery):查询了一方,就会自动的将关联的一方查询出来

    动态查询(dynamic):只有用到了才去查询(得到一个结果集,只有你去获取才能得到)

    lazy的使用:

    users=db.relationship('多方的模型类',backref="role(自己随意命名)",lazy='dynamic')

    session指定存储位置(理解)

    定义:用来存储敏感信息,存储在服务器内部

    设置:session[key]=value

    获取:value=session.get(get)

    注意点:设置SECRET_KET

    指定session存储到redis中

    操作流程

    1/安装flask_sess

    pip install flas_session

    2/导入Session;类

    from flask_session import Session

    3/设置session相关的配置信息到app中

    4/读取app身上的配置信息(和session相关的)

    Session(app)

    <设置app的配置信息>

    app.config["SESSION_TYPE"]="redis"指定session的存储类型

    app.config["SESSION_REDIS"]=StrictRedis()指定redis服务器地址

    app.config["SESSION_USE_SIGNER"]=True设置session的签名信息

    app.config["PERMANENT_SESSION_LIFETIME"]=timedelta(seconds=10)设置session在redis中的存储时间

    session默认有效期是31天

    expires有效期

     g对象在一次请求中的所有的代码的地方,都是可以使用的

     
  • 相关阅读:
    IE6下不能定义1px高度的容器和IE6 双边距
    py django 渲染前端打包的视图
    关于常见的递推关系。
    题解:一些递推的题。
    题解:极值问题。
    题解:城南树林。
    题解:论编辑器的和谐共处。
    题解:左右横跳。
    题解:斑马,斑马(zebra)
    找 前端 私活
  • 原文地址:https://www.cnblogs.com/testzcy/p/11335642.html
Copyright © 2011-2022 走看看