特点总结:

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

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

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

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对象在一次请求中的所有的代码的地方,都是可以使用的

 

flask 框架 转载:https://cloud.tencent.com/developer/article/1465968的更多相关文章

  1. 有状态(Stateful)应用的容器化 - 云+社区 - 腾讯云 https://cloud.tencent.com/developer/article/1020178

    有状态(Stateful)应用的容器化 - 云+社区 - 腾讯云 https://cloud.tencent.com/developer/article/1020178

  2. flask 框架 转载:https://cloud.tencent.com/developer/article/1465949

    1.cookie.py """ - 解释: 用来保持服务器和浏览器交互的状态的, 由服务器设置,存储在浏览器 - 作用: 用来做广告推送 - cookie的设置和获取 - ...

  3. 我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=i5j7gwrxj9x5

    我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=i5j7gwrxj9x5

  4. 我的博客即将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=3cp8ng15g94wc

    我的博客即将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=3cp8ng15g94wc

  5. zookeeper选举状态介绍 摘自https://cloud.tencent.com/developer/news/303891

    zookeeper集群 配置多个实例共同构成一个集群对外提供服务以达到水平扩展的目的,每个服务器上的数据是相同的,每一个服务器均可以对外提供读和写的服务,这点和redis是相同的,即对客户端来讲每个服 ...

  6. Mui本地打包笔记(一)使用AndroidStudio运行项目 转载 https://blog.csdn.net/baidu_32377671/article/details/79632411

    转载 https://blog.csdn.net/baidu_32377671/article/details/79632411 使用AndroidStudio运行HBuilder本地打包的Mui项目 ...

  7. Scrapy框架的学习(6.item介绍以及items的使用(提前定义好字段名))转载https://blog.csdn.net/wei18791957243/article/details/86259688

      在Scrapy框架中的items.py的作用   1.可以预先定义好要爬取的字段     items.py import scrapy     class TencentItem(scrapy.I ...

  8. AutoFac控制反转 转载https://blog.csdn.net/u011301348/article/details/82256791

    一.AutoFac介绍 Autofac是.NET里IOC(Inversion of Control,控制反转)容器的一种,同类的框架还有Spring.NET,Unity,Castle等.可以通过NuG ...

  9. 爬虫出现Forbidden by robots.txt(转载 https://blog.csdn.net/zzk1995/article/details/51628205)

    先说结论,关闭scrapy自带的ROBOTSTXT_OBEY功能,在setting找到这个变量,设置为False即可解决. 使用scrapy爬取淘宝页面的时候,在提交http请求时出现debug信息F ...

随机推荐

  1. IP通信学习心得03

    三.TCP.三次握手.四次挥手 1.TCP数据包结构 注: A:序列号字段是所发字节的第一个字节的序号. B:报头最大长度为60个字节(4bits),最小为20个字节. C:  发送窗口由接收窗口决定 ...

  2. springboot(3):整合Servlet,filter,listener

    1.springboot整合Servlet(2种方式) 添加maven依赖:spring-boot-starter-web 1>通过注解扫描完成Servlet组件的注册(方式1) 步骤:需要3步 ...

  3. java8 : 流

    package day02.com.offcn.test; import java.io.IOException; import java.nio.charset.Charset; import ja ...

  4. Ubuntu 软件卸载脚本(卸载软件 + 移除配置文件 + 移除依赖项)

    #!/bin/bash function z-apt-uninstall() { if [ ! $1 ] then echo "z-apt-uninstall error: software ...

  5. Python09之range函数(BIF内置函数)

    具体语法: range(起始值,结束值,步进值) range() 其属于内置函数,不需要导入其他模块即可使用,直接在Python的IDLE直接可以使用. list(range(0,10)) [0, 1 ...

  6. QueryList::Query() The received content is empty!的经准灵活解决办法

    QueryList::Query() The received content is empty! 最近因为项目问题出现The received content is empty!,我也有过在网上寻找 ...

  7. 以php中的算数运算符操作(整型,浮点型,字符串型,布尔型,空类型)数据

    // 环境 // // php版本 // PHP 7.0.33-0+deb9u1 (cli) (built: Dec 7 2018 11:36:49) ( NTS ) // Copyright (c) ...

  8. python学习-58 configparse模块

    configparse模块 1.生成文件 import configparser # 配置解析模块 config = configparser.ConfigParser() # config = { ...

  9. Redis--zset类型操作命令

    有序集合类型 zset (sorted set ) redis 有序集合zset和集合set一样也是string类型元素的集合,且不允许重复的成员. 不同的是 zset 的每个元素都会关联一个分数(分 ...

  10. Python【常用的数据类型】

    int,  float,  string整数,浮点数,字符串----------------------------------------字符串(string)用引号括起来的文本 >>& ...