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对象在一次请求中的所有的代码的地方,都是可以使用的
flask 框架 转载:https://cloud.tencent.com/developer/article/1465968的更多相关文章
- 有状态(Stateful)应用的容器化 - 云+社区 - 腾讯云 https://cloud.tencent.com/developer/article/1020178
有状态(Stateful)应用的容器化 - 云+社区 - 腾讯云 https://cloud.tencent.com/developer/article/1020178
- flask 框架 转载:https://cloud.tencent.com/developer/article/1465949
1.cookie.py """ - 解释: 用来保持服务器和浏览器交互的状态的, 由服务器设置,存储在浏览器 - 作用: 用来做广告推送 - cookie的设置和获取 - ...
- 我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=i5j7gwrxj9x5
我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=i5j7gwrxj9x5
- 我的博客即将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=3cp8ng15g94wc
我的博客即将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=3cp8ng15g94wc
- zookeeper选举状态介绍 摘自https://cloud.tencent.com/developer/news/303891
zookeeper集群 配置多个实例共同构成一个集群对外提供服务以达到水平扩展的目的,每个服务器上的数据是相同的,每一个服务器均可以对外提供读和写的服务,这点和redis是相同的,即对客户端来讲每个服 ...
- Mui本地打包笔记(一)使用AndroidStudio运行项目 转载 https://blog.csdn.net/baidu_32377671/article/details/79632411
转载 https://blog.csdn.net/baidu_32377671/article/details/79632411 使用AndroidStudio运行HBuilder本地打包的Mui项目 ...
- Scrapy框架的学习(6.item介绍以及items的使用(提前定义好字段名))转载https://blog.csdn.net/wei18791957243/article/details/86259688
在Scrapy框架中的items.py的作用 1.可以预先定义好要爬取的字段 items.py import scrapy class TencentItem(scrapy.I ...
- AutoFac控制反转 转载https://blog.csdn.net/u011301348/article/details/82256791
一.AutoFac介绍 Autofac是.NET里IOC(Inversion of Control,控制反转)容器的一种,同类的框架还有Spring.NET,Unity,Castle等.可以通过NuG ...
- 爬虫出现Forbidden by robots.txt(转载 https://blog.csdn.net/zzk1995/article/details/51628205)
先说结论,关闭scrapy自带的ROBOTSTXT_OBEY功能,在setting找到这个变量,设置为False即可解决. 使用scrapy爬取淘宝页面的时候,在提交http请求时出现debug信息F ...
随机推荐
- 软件素材---C语言函数不确定个数的入参的处理
1 : #用来把参数转换成字符串 #define P(A) printf("%s:%d\n",#A,A);int main(int argc, char **argv) { ...
- java junit4-JUnit测试报 No socket available 错误
问题描述 JUnit测试报 No socket available 错误 Eclipse进行JUnit测试时,总弹出 No socket available 窗口,导致测试不能进行. 解决方案一: 打 ...
- 打jar包在linux上执行
1.jar包插件 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>ma ...
- hadoop 空间配置
hadoop-------------- 分布式计算框架. common // hdfs //存储 mapreduce //MR,编程模型. yarn //资源调度. 集群部署----------- ...
- Aop 打印参数日志时,出现参数序列化异常。It is illegal to call this method if the current request is not in asynchron
错误信息: nested exception is java.lang.IllegalStateException: It is illegal to call this method if the ...
- SaltStack实现动态文件分发,支持脚本换行,中文乱码
场景:将动态脚本分发到各个机器的指定目录下 说明:使用SaltStack的 file.managed file.managed 里面可以定义内容的几种方式 - source: - contents: ...
- mysql允许root远程登录
MySQL 默认不允许远程以root进行登陆 进入mysql后 mysql>select host, user from user; +--------------------+------+ ...
- .net core 杂记:用Autofac替换内置容器
官方建议使用内置容器,但有些功能并不支持,如下: 属性注入 基于名称的注入 子容器 自定义生存期管理 Func<T> 支持 所以可以使用其他第三方IOC容器,如Autofac,下面为学习使 ...
- Fortify漏洞之Path Manipulation(路径篡改)
继续对Fortify的漏洞进行总结,本篇主要针对 Path Manipulation(路径篡改)的漏洞进行总结,如下: 1.Path Manipulation(路径篡改) 1.1.产生原因: 当满足以 ...
- C++ 基础知识汇总 持续更新
摘录一些C++面试常考问题,写一些自己的理解,花了挺长时间的,作图是真的累,欢迎来摘果子. static关键字 用于声明静态对象: 静态函数只在本文件可见.(默认是extern的) 全局静态对象:全局 ...