Python学习周总结(18.04.16 - 04.20)

   本周的培训内容主要为Redis,SQL及Git三个模块的基础知识与实践,详细内容如下所示:

1、Redis
redis-server myredis.conf &:按照myredis.conf中的配置开启redis服务器(& 后台运行)
redis-cli:redis客户端连接服务器
:/requirepass(查询设置密码处) --> requirepass xxxxxx(设置密码) --> 设置好密码后以后登录客户端就需要输入密码(auth xxx),启动客户端通过键入keys * 或 ping命令查看反应来验证密码设置是否成功

redis-server --help:查看redis-server命令可以接哪些参数
redis-cli -h xxx(ip) -p 6379:访问别人的redis服务器,如果对方设置密码需要键入密码(通过命令auth xxx)

redis 五大数据类型: string hash list set zset
type value:判断value的类型
keys *:查看所有的key值(任何数据类型)
string:
set / get / del: 设置、获取、删除指定key-value
incr p:整数,每操作1次值递增1
decr p:整数,每操作1次值递减1
incrby / incrbyfloat / decrby / decrbyfloat: 增加、减少指定量
mset:批量赋值
mget:批量获取
append:末尾追加
getrange m 0 -1:切片

hash:
hset hget:设置/获取key-value
hkeys:获取所有的key
hvals:获取所有的value
hgetall:获取所有的key-value
hdel:删除指定的key-value

list:双向列表
lpush / rpush:从左边/右边插入
lrange:从左到右查看列表中指定范围的元素
lpop / rpop:从左头/右头删除元素
llen:查看列表中元素的个数

set:
sadd:插入元素
scard:查看集合中元素的个数
smembers p:查看集合中的元素
spop:随机删除一个元素

zset: 有序集合
zadd:插入元素及对应的分数
zscore:获取指定元素的分数
zrange g 0 -1:获取指定范围内的元素(按照分数从小到大排列)
zrevrange g 0 -1:获取指定范围内的元素(按照分数从大到小排列)

2、SQL
limit:限制查询返回出来的条数
offset:指定select语句开始查询的数据偏移量,默认情况下偏移量为0
CRUD:增删改查
decimal(3,1):结果三位数字,小数点后一位

select * from table1 t1
join table2 t2 on t1.id=t2.cid
join table3 t3 on t3.sid=t1.id
where name='Nill';

select * from table1 t1, table2 t2, table3 t3
where t1.name='Jack' and t1.id=t2.cid and t3.sid=t1.id;
select * from student order by(-id):查找结果按id值倒序排列
select * from student where id in (1,2):搜索id为1、2的元组
desc grade:查询表结构
alter table studemt change 旧名称 新名称 int;:改变列的名称
alter table student drop 列名称;:删除指定列
alter table StudentInfo add constraint cc foreign key(i_id) references Student(id);:表格建好后再指定外键

聚合函数:group by(分组)、order by(排序)、sum(求和)、count(计数),max(取最大值)、min(取最小值)、avg(求平均值)
select count(*) as '学生个数', tc.cname as ‘班级名称’from tb_stu ts join tb_class tc on ts.cid=tc.id group by(tc.id);:count --> 计数 as --> 重命名
foreign key(cid) references tb_class(id):创建外键

查询每个班级下有多少学生
select count(*) as '学生人数', g.g_name as '班级名称' from Student s join Grade g on s.g_id=g.id group by(g.g_name);

查询每个班级下学生的语文成绩最高的学生(一个学生)
select * from
(select max(s_chinese) as c, g_id from student s1 group by s1.g_id) t1
join student t2 on t2.s_chinese = t1.c
and t1.g_id = t2.g_id;

所有班:select * from Student where s_chinese in (select max(s_chinese) from Student);

查询每个班级下学生的数学成绩最低的学生(前三个)
select * from student s1
where 3>= (
select count(*) from student s
where s1.s_math >= s.s_math
and s1.g_id=s.g_id
)order by s1.g_id, s1.s_math;

所有班:select * from Student order by(s_math) limit 3;

统计每个班级下语文成绩的平均值,以及总和
select avg(s.s_chinese) as '语文平均分', sum(s.s_chinese) as '语文总分', g.g_name as '班级名称' from Student s join Grade g on g.id=s.g_id group by(g.g_name);

查询每个班级下语文成绩大于60分的学生信息
select * from Student s
where s.s_chinese>60
order by s.g_id;

cascade:更新主表时,关联表也更新
set null:删除主表数据时,关联表对应值设置为null
if(条件,exper1,exper2)
ifnull(条件,exper1,exper2)
having 后面可以加函数进行筛选 与group by连用
where stubirth between '1980-1-1'and '1989-12-1':选取区间值
inner join on/ left outer join on/right outer join on
bit:布尔值
longblob:二进制大对象,是一个可以存储二进制文件的容器

mysql事务:
原子性:一个事务是不可分割的一个整体,要么都做,要么都不做
一致性:数据库从一个状态变为另一个状态
隔离性:一个事务在执行的时候不能被其他的事务干扰,即各事务之间的操作互不干扰
持久性:一个事务一旦提交,对数据库的变化就是永久性的

windows下:
py2.x连接数据库: pip install mysqldb
py3.x连接数据库: pip install PyMySQL

pip list:查看pip中的内容
pip freeze:查看用pip安装的内容

pymysql的使用
import pymysql

  1. 创建数据库连接
    db = pymysql.connect(
    host='localhost',
    user='root',
    passwd='xxxxxx',
    db='selectclass',
    port=3306,
    charset='utf8')

  2. 创建游标,缓存sql语句执行的结果
    cursor = db.cursor()

  3. 创建sql语句、执行并提交,若插入数据有问题,则回滚
    try:
    sql = '''delete from tb_student where stuid=1002;'''
    cursor.execute(sql) # 执行sql语句
    db.commit() # 提交结果
    except Exception as e:
    print(e)
    db.rollback()

  4. 关闭数据库连接
    db.close()

3、Git
分支(branch)
线上分支(master) --> 最终的项目代码
测试分支(test)
开发分支(dev)
自己开发分支
同事开发分支

码云:可以创建私有代码
git:创建私有代码需要收取费用

github使用:
git clone https://github.com/xxxxxx/20180420.git:将代码克隆到本地
git status:查看分支工作区状态
git branch:查看所有分支

git checkout -b 分支名:创建本地分支并切换(copy master)
git checkout 分支名:切换分支
git branch -d 分支名:删除本地分支
git push origin --delete 分支名:删除远程分支

git add .:将所有修改添加到缓存区中
git add 修改的文件名:将修改后的指定数据添加到缓存区

git commit -m '注解': 提交修改到本地分支

git pull origin 分支名:如果多人开发,为保持一致性需要先拉取一下代码再提交到远端
git push origin 分支名:提交本地分支到远程分支上,空的文件夹传不上去

ssh-keygen -t rsa -C 帐号:创建ssh密钥,以后克隆ssh地址后提交不用再输入帐号、密码

git commit -am '注解':将add和commit命令结合在一起

git config --global user.email "xxx" : 设置全局邮箱
git config --global user.name "xxx" : 设置全局用户名

git diff yusir master:查看两个分支的不同

git checkout master
git merge yusir
git push origin master:切换到master分支下,合并yusir分支的内容后提交

git tag:查看当前的所有版本
git tag -a 版本号 -m '注解':在master分支下进行,上线代码需要打tag
git push origin 版本号:推送版本
git tag -d 版本号:删除本地版本
git push origin --delete tag 版本号:删除远端版本

如何不用merge就将修改内容从一个分支转到另一个分支
git stash [save] [-a] ["注解"]:缓存当前修改数据,save可加可不加,如果加入了新代码,则需加-a

git status:查看当前分支工作状态,如果缓存了,状态会由红变绿
git checkout 分支名:切换到应用缓存的指定分支
git stash list:查看有哪些缓存
git stash apply/pop stash@{x}:应用指定缓存,x --> 缓存号,使用pop后缓存会消失
git stash drop stash@{x}:删除指定缓存,x --> 缓存号
git stash clear:清除所有缓存

git log:查看代码提交信息
git show 版本id:查看指定版本信息
git reset --hard 版本id:代码回滚,返回历史版本

   总的来说本周的课程更多地专注于基础命令的讲解,实操环节占比较小,知识量较少,熟练掌握还需勤练习并自行扩展,期待下周Django框架阶段的学习。

你可能感兴趣的:(Python学习周总结(18.04.16 - 04.20))