Flask项目基础知识准备

一.数据库

1.关系属性-懒查询

关系属性默认会将所有的关联数据自动查询出来,如果关联数据较多且不需要立即使用会导致性能的浪费,
可以设置关系属性的懒查询机制,关联数据就不会自动查询了,关系属性返回,可插入查询对象,
 如果想要查询关联数据,再添加all/first/count等条件就会执行具体查询
 可插入查询对象 仍然可以像列表一样 使用`append`来关联数据,也可以通过遍历来取出数据
demo:
addresses = db.relationship("Address", lazy="dynamic")

2.关系属性-反向查询

 设置关系属性的反向引用`backref`参数,等效于在关联的类中定义反向关系属性:
demo:
addresses = db.relationship("Address", lazy="dynamic", backref="user")

backref相当于:
用户 反向关系属性
user = db.relationship("User")

然后就可以根据地址查询对应的人:
print(adr1.user_info.name)

3.数据迁移

作用: 在保留原数据的前提下, 更新数据库结构

安装数据迁移组件 flask-migrate

数据迁移还依赖flask-script脚本启动组件来生成迁移命令

步骤:
一:
mgr = Manager(app)

# 初始化数据迁移组件
Migrate(app, db)
# 使用管理器来生成迁移命令
mgr.add_command("mc", MigrateCommand)
二  terminal执行:
三个命令:

生成迁移文件夹 `python xx.py mc init`
生成迁移版本 `python xx.py mc migrate -m  "注释"`
执行升级操作 `python xx.py mc upgrade`

补充:
查询历史版本 `python xx.py mc history`

查询当前版本 `python .py mc current`

二.蓝图

蓝图的基本使用(重点)

1. 蓝图的基本使用 (重点)
作用: 实现flask项目`模块化`

app作为项目的核心对象, 最好不要管理整个网站的所有路由, 可以使用`蓝图对象`来分管`不同功能模块的路由`

蓝图的使用步骤(包括两个使用细节):
1.创建蓝图对象: __init__
# 细节1:url_prefix参数可以给原图注册的路由添加统一的资源段前缀
news_blue = Blueprint("news_b", __name__, url_prefix="/news")

2.使用蓝图来注册(授权)路由: views
@news_blue.route('/')
def index():
	细节二: url_for的参数叫做函数标记,如果是蓝图注册的路由,其函数标记为:蓝图名.函数名
	url1 = url_for("news_b.index")
	print(url1)
	return "index"

3.应用注册蓝图对象:主应用
app.register_blueprint(news_blue)
4.让视图函数和主程序建立关联:__init__
出现importerror,就是导入内容没有被创建  解决办法:查看并修改代码调用顺序
from news.views import *

图 1 蓝图的基本使用

三.Redis

1.NOSQL和Redis介绍(了解)

NoSQL: 非关系型数据库, 存放的是[键值对]数据, 不适合用于[关系特别复杂]的数据查询场景
Redis:
优点:

1.性能极高 – 内存型数据库,读写速度极快
2.丰富的数据类型
3.数据持久化
4.设置过期时间

使用场景: 对[速度]有要求, 并且需要设置[过期时间], 如session存储, (新闻)网页缓存,秒杀活动

2.配置

配置文件路径: /etc/redis/redis.conf

3.客户端&服务端命令

启动redis数据库
sudo redis-server /etc/redis/redis.conf
连接数据库
sudo redis-cli -h 127.0.0.1 -p 6379

4.String(重点)

5个命令:
set 添加/修改数据
get 获取数据
mset 添加多个数据
mget 获取多个数据
append 拼接数据

5.键命令(重点)

6个命令:
del 删除数据
type 获取数据类型
exists 判断数据是否存在
expire 设置过期时间
ttl 获取剩余时间
keys 查询满足条件的键

6.hash

类似字典的结构
7个命令
hset 添加数据
hget 获取数据
hmset 添加多个数据
hmget 获取多个数据
hdel 删除数据
hkeys 获取数据的所有键
hvals 获取数据的所有值

7.python操作 redis(重点)

安装第三方包 pip install redis

四 Git

1.创建远程仓库

世界最先进的分布式版本控制工具
作用:
代码备份(存档)
方便团队协同开发(云盘)
控制工具分类:
1.集中式:svn
2.分布式:git

2.生成版本(重点)

创建本地仓库
VCS - Import into Version Control - Create Git Repository
配置作者信息(命令)
git config user.name zs git config user.email zs@itcast.cn
让git管理文件: terminal操作
VCS- git - add
生成版本
文件右键 - git - commit - file

3.版本操作

3.1 对比版本
3.2 撤销版本
3.3 切换版本

1.mixed和hard选项:
mixed:代码不变,只切换仓库的版本
hard:代码和仓库的版本都切换
2.切换
方式一
图片
切换到指定的版本 方式2

1>. 查看历史版本, 找到目标版本号 `git reflog`

2>. `VCS-Git-Reset Head-输入版本号`

3.4 设置忽略文件
.gitignore: 忽略文件, 如果不希望git监视项目中的某些文件/文件夹, 可以将其路径设置到忽略文件中

4.标签

5.分支

五. Git远程管理仓库操作基础

代码托管平台 github.com
码云 gitee.com

2.git远程操作(重点)

安装gitee插件, 设置账号和密码
图2 gitee插件
remotes: 本地仓库关联远程仓库
push: 将本地仓库的版本推送到远程仓库
clone: 第一次从远程仓库中下载代码
pull: 拉取远程仓库的版本

3.代码合并(重点)

本地仓库缺少远程仓库中的某些版本时, 无法进行推送
推送失败后, 需要进行代码合并才能推送

1.先执行`fetch`查询远程的版本 (pull是查询并拉取远程的版本, 如果有版本冲突,会自动合并)
2.1再选择`rebase`合并: 远程版本的变化会直接合并到`当前本地版本`中
  1 > 如果`修改的不是同一个文件, 自动合成成功`
  2 >如果`修改的是同一个文件`, 自动合并失败, 需要`手动合成代码`(和同事沟通解决方案)
2. 2再选择`merge`合并: 远程版本和本地版本的变化会合并到一个新的版本中

如何避免代码冲突:

1.尽量不要修改同一个文件
2.不要擅自修改别人的代码
3.多进行推送和合并操作

4.分支

1.作用: 隔离开发主线, 当开发新功能时, 一般会开辟新的开发分支, 在开发分支中进行开发, 开发成功后, 将开发分支中的版本合并回主分支
2.新分支: 相当于对仓库进行一个完整的拷贝

图3 分支
项目经理:

1.创建新分支
    右下角`Git:master` -> `+New Branch`
2.推送到远程仓库

(`待分支提交代码后`)
3.合并开发分支的内容到主分支: 先`拉取开发分支`的版本, 再`切换到主分支`, 最后进行合并
4.删除分支

开发人员:

图4 拉取代码
1.拉取代码
2.切换到指定的分支进行开发和提交

5.标签

作用: 给重要的版本进行标记, 方便快速切换到目标版本
项目经理:

创建标签
推送到远程仓库

开发人员:

拉取远程的标签
切换到标签对应的版本, 进行一些开发

全局配置作者信息
git config user.name zs --global
git config user.email zs@163.com --global

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值