怎样黑公司的网站,网站的空间和域名,大连地区建设网站,卡盟网站模板1_ORM概述[理解]
解释: 对象关系映射模型特点: 1.将类名,属性, 映射成数据库的表名和字段2.类的对象,会映射成为数据库表中的一行一行的数据 优缺点: 优点: 1.不再需要编写sql语句2.不再关心使用的是什么数据库了 缺点: 1.由于不是直接通过sql操作数据库,所以有性能损失
2_…1_ORM概述[理解]
解释: 对象关系映射模型特点: 1.将类名,属性, 映射成数据库的表名和字段2.类的对象,会映射成为数据库表中的一行一行的数据 优缺点: 优点: 1.不再需要编写sql语句2.不再关心使用的是什么数据库了 缺点: 1.由于不是直接通过sql操作数据库,所以有性能损失
2_ORM操作流程[掌握]
操作流程: 1.安装扩展 pip install flask_sqlalchemypip install flask_mysqldb / pymysql 2.设置数据库的配置信息3.创建sqlalchemy对象db,关联app4.编写模型类,继承自db.Model,编写字段5.操作数据库 增删改查询
3_ORM操作注意[理解] 注意点: 1.因为SQLALChemy去app身上读取了配置信息,所以需要设置到app.config身上 2.数据库的链接信息 如果安装的是flask_mysqldb, 那么链接信息: mysql://用户名:密码ip地址:端口号/数据库名字如果安装的是pymysql, 那么链接信息: mysqlpymysql://用户名:密码ip地址:端口号/数据库名字 3.编写的模型类必须继承自db.Model才能被映射 4.如果不指定表名称,默认生成的就是模型类的小写,如果需要自己指定表名使用_tablename_‘表名’ 5.ORM在进行映射的时候不能生成数据库的
4_数据库增删改[掌握]
增删改 全部都是使用db.session操作常见方法: db.session.add(obj) 添加单个对象db.session.add_all([obj1,obj2]) 添加多个对象db.session.delete(obj) 删除单个对象db.session.commit() 提交会话db.drop_all() 删除继承自db.Model所有表db.create_all() :创建继承自db.Model的所有表其他: db.session.rollback() 回滚db.session.remove() 移除会话 案例: 编写两个模型类, 一个角色模型类, 还有一个用户模型类 关系: 一对多 注意点: 如果想要打印一个对象的时候看到指定的信息, 那么重写__repr__方法
5_数据库基本查询[掌握]
全部都是通过, 模型类.query来进行的 使用常见的12条语句
6_数据库关系查询relationship[掌握] 解释: 为了方便数据库的关联查询 特点: 1.不会在数据库产生实体字段2.关系属性,需要在一方添加3.外键是添加在一方的, 并且关系属性的使用,需要依赖于外键 需求: 1.如果知道了角色的情况下,能否快速查询出,哪些用户扮演了该角色 原始查询方法: role Role.query.get(1)users User.query.filter(User.role_id role.id).all() 快速查询: 使用relationship添加关系属性,就可以快速查询了.格式: users db.relationship(“多方的模型类”) 使用格式: role Role.query.get(1)users role.users
7_数据库反向查询backref[掌握]
解释:如果知道了用户的情况下,能否快速查询出,哪些该用户扮演了哪个角色
原始查询方法: user User.query.get(1)role Role.querye.filter(Role.id user.role_id).first() 快速查询: 使用backref添加反向属性,就可以快速查询了格式: users db.relationship(“多方的模型类”,backref“role”) 快速查询: user User.query.get(1)role user.role
8_数据库懒查询lazy[了解]
解释: 一旦使用了relationship,backref,那么系统会自动做子查询 子查询(subquery): 查询出了一方, 就会自动的讲关联的一方查询出来动态查询(dynamic): 只有用到了才去查询 lazy使用 db.relationship(“多方的模型类”,backref“role”,lazy“dynamic”)
9_图书馆数据库搭建[掌握]
分析图书馆案例 1.数据库配置 作者模型(一方)书籍模型(多方) 2.添加测试数据3.添加作者,书籍4.删除作者,删除书籍
10_图书馆测试数据添加[掌握]
提示: 测试数据,见讲义文档
11_图书馆测试数据显示[掌握]
步骤 1.查询所有作者信息2.携带作者信息,渲染页面
12_图书馆添加数据[掌握]
添加的逻辑分析: 1.如果作者存在,书籍存在, 不能添加2.如果作者存在,书籍不存在,可以添加3.如果作者不存在,可以添加
13_图书馆删除书籍[掌握]
步骤 1.根据书籍编号获取书籍对象2.删除书籍对象3.重定向到页面展示
14_图书馆删除作者[掌握]
步骤 1.根据作者编号获取作者对象2.遍历删除,作者书籍对象3.删除作者,提交数据库4.重定向到页面展示
15_图书馆CSRFProtect应用[掌握]
作用: 防止csrf攻击的[项目倒数第二天看源代码校验过程]使用步骤: 1.导入类CSRFProtect2.使用CSRFProtect保护app 一旦使用POST,PUT,DELTE,PATCH方式提交的时候就需要校验csrf_token 3.需要设置SECRET_KEY,用来加密csrf_token4.设置csrf_token到表单中
16_表结构多对多分析[掌握]
解释: 多对多的关系,一般会被拆分成两张一对多的表
17_表结构多对多代码演练[掌握] 中间表: tb_student_course db.Table(tb_student_course,db.Column(student_id,db.Integer,db.Foreign(students.id))db.Column(courses_id,db.Integer,db.Foreign(courses.id))
)18_表结构模板代码分析[了解]
提示: 见keynote, PDF文档
19_数据库迁移[掌握]
目的: 当数据库的表结构发生变化之后,如果直接删除原有的数据,再添加新的数据,有可能导致数据丢失注意点: 1.是为了备份表结构,而不是数据2.如果想要备份数据,需要使用工具,navicat,mysqlworkbench,等等3.更新的过程数据一般不会丢失,做降级的时候需要谨慎操作 操作流程: 1.安装扩展 pip install flask_scriptpip install flask_migrate 2.导入三个类 from flask_script import Managerfrom flask_migrate import Migrate, MigrateCommand 3.通过Manager类创建对象manager,管理app manager Manager(app) 4.使用Migrate,关联db,app Migrate(app,db) 5.给manager添加一条操作命令 manager.add_command(“db”,MigrateCommand) 相关迁移命令: 生成迁移文件夹[一次就好] python xxx.py db init 将模型类生成迁移脚本[重复执行] python xxx.py db migrate -m ‘注释’ 将迁移脚本更新到数据库中[重复执行] python xxx.py db upgrade/downgrade [version] 其他命令 查看最新版本的命令 python xxx.py db show 查看当前版本 python xxx.py db current 查看所有的历史版本 python xxx.py db history