flask 框架_数据库

特点总结:

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

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

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

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()​​移除会话

 flask 框架_数据_02

查询语句:特点:模型.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')​

flask 框架_数据库_03

 

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