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框架阶段的学习。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 225,061评论 6 523
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 96,407评论 3 404
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 172,275评论 0 368
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 61,084评论 1 300
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 70,091评论 6 400
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 53,555评论 1 315
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 41,914评论 3 429
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 40,900评论 0 279
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 47,438评论 1 324
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 39,470评论 3 346
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 41,596评论 1 355
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 37,187评论 5 351
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,932评论 3 340
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 33,361评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 34,511评论 1 277
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 50,163评论 3 381
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 46,671评论 2 366

推荐阅读更多精彩内容

  • git常用命令 GIT常用命令备忘:http://stormzhang.com/git/2014/01/27/gi...
    新篇章阅读 8,506评论 1 26
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,685评论 18 399
  • Git 命令行学习笔记 Git 基础 基本原理 客户端并不是只提取最新版本的文件快照,而是把代码仓库完整的镜像下来...
    sunnyghx阅读 3,929评论 0 11
  • 我们生活中,不免有时会遇到一些很小气的人。 这种人有一个大特点,抠! 当然,对自己省,对别人也省的人我们能理解,这...
    花自天涯阅读 207评论 1 0
  • 问: 感恩,这两个字怎么解释?禾意你怎么看? 答: 我看到感恩两个字,会从心里喜爱,因为跟这个词有关的一切字群和信...
    与禾意对话阅读 779评论 0 0