0803-Sql扩展和回归web框架
Sql扩展:
账户管理,就是在生产环境中操作数据库的时候 绝对 不要用root账户连接,而且创建特定的行乎,给一定的操作权限
Sql账户有以下几种:服务实例级,数据库级,数据表级,字段级,存储程序级
就是怕你开发的时候手一抖给数据库删了或者发电跑路删库 而且可以指定让你用select,不让用update,delete之类的
grant 权限列表 on 数据库 to '用户名'@'访问主机' identified by '密码'
创建一个 laowang 的账户 密码为laowang123456 只能通过本地访问 只能对jing_dong数据库的所以表进行 读取 操作
grant select on jing_dong.* to 'laowang'@'localhost' identified by 'laowang123456';
这个东西一般用不到,只有root管理员能添加,访问主机可以填IP或%或者localhost,%是任意主机,localhost是本地
select写all privileges表示所有权限,修改权限和改密码如下:
grant 权限列表 on 数据库 to '用户名'@'访问主机' with grant option;
update user set authentication_string=password('新密码') where user='用户名';
password是来加密密码的,你可以不加,但是那就不会加密
怎么远程连接另一台电脑的sql?
mysql -uxxx -pxxx -hxxx.xx.x.xxx -p3306
-h是IP,-p是端口
要是还是连不上怎么办,用sudo打开vim /etc/mysql/mysql.conf.d/mysqld.cnf,把bind端口那句删掉
删除用户用drop user '用户名'@'主机',删不掉就用delete from user where user='用户名';
以上的所有修改完后要用flush privileges刷新权限
Sql主从
就是多个Sql服务器,能用来随时备份,也能拿来分担,可以把所有修改的之类的放到主里面,查之类的放到从服务器里,读写分离负载均衡
主(master)服务器,从(slave)服务器,DeepDrakMaster服务器(
一个主服务器可能有许多二级从服务器,而这些二级服务器可能下面还有三级服务器之类的,他们直接主要通过二进制日志来保持同步
然后其下级服务器进行IO读写操作,并且决定执行哪一类时间
而且要设置服务器的唯一ID,要标识服务器,可以在网上搜怎么完成主从配置
备份数据mysqldump -uroot -p123456 数据库名 > python.sql;
恢复数据mysql -uroot -p123456 新数据库名 < python.sql;
# 大于小于号表示重定向输出
具体的流程就不再赘述了,这个东西主要学思想,暂时有段时间不会用到,我这windows环境也不一样,Sql都不一定装了,更别提搞主从了
Sql这章就到这吧,准备准备web框架
好,一个小时过去了BUG解决了
当初留的程序不知道为啥跑不了了,整半天又回去换上个版本重新写吧,重新看视频重新写
成了,重新建了个文件夹,叫Web服务器-new,原来那文件结构忒烂了,这个新的就留模板文件以及以后的web框架版本
原理那个就留着废弃了,万一以后还要回去找文件,这个新文件夹一定要一个版本一个文件夹,不要一起塞一个文件夹
ulr 统一资源定义符,唯一标记去哪个网址去服务器的哪个路径下的什么东西
比如www.baidu.com/a/b/c/d/readme.html
好像露了段内容没录制,框架里多了个re替换的代码,不过手动补上了,问题不大
用装饰器来自动定义URL_FUNC_DICT
这个实际上是利用了装饰器能对函数进行操作并且后面调用函数不用变的特性来进行更加方便的操作,不然我手动写也是一行,更简单
但是确实非常天才,在@装饰器的时候直接加()让他执行,然后传这个函数在网页里的地址,装饰器外面再套一层,这样抵消了@的时候调用的那层
就像把原来的装饰器当成另外一个独立的函数一样,但是一层函数接收了URL,二层接收函数引用,那么刚好能直接加到字典里了
这个是对装饰器的运用,非常天才的做法,我们可以叫这个为映射
来这个URL请求,映射到程序中是哪个,配对,index函数映射到URL中是/index.py,同样的,/index.py映射到程序中是index函数
以及仔细想想可以发现,call_func里面其实以及不重要了,因为我们是框架,调这个东西是通过字典里面的value值(函数引用)去调的,而不是直接index()
其实现在我们实现的就可以叫路由功能,你来一个请求我对应这个做一个回复
静态,动态,伪静态的区别
域名/news/2012-5-18/110.html这种是普通的URL,我们叫他真静态URL
域名/NewsMore.asp?id=5 这种带个?的乱七八糟的我们叫他动态URL,这个是个逻辑地址,不是实际html地址
问号后面的实际上就可以理解为参数,前面的是调用函数
网站常用的语言asp和php,asp好像是windows的,至于php
php是世界上最好的语言(这是一个在官方文档中出现过的梗,但是php本身确实在web开发中很常用,但是我还是喜欢python
京东给URL的语言后缀抹了,防止你找他后台用的语言的漏洞
百度有可能是比如说你点一下收商家多少多少钱,所以你与其去超市捏方便面不如一直点网站(
而如果没付费,他的排名就是根据你的优化(SEO)啊之类的东西来,所以如果你做了个网站,不用想,前十页绝对没你(
域名/course/74.html,这个就是看起来是静态,但是你网站内部把course当函数,功能还是动态的,来骗搜索引擎
没错,下面就来实现web服务器支持伪静态(
视频里是直接把所有的html当成动态放进去,但是我就觉得不太合理,要是他真的是静态安装原本没改服务器传过去那不就挂了吗
我觉得可以在框架里看,看这个东西在不在url_func_dict里,要是不在就让服务器看看能不能打开,打不开就404
然后就是把sql查出来的数据替换到content里
我查出来的数据是一个元组嵌套,大元组是所有,小元组是每行
那么每行在html里有个模板,把模板里的数据挨个替换成小元组的数据,这样就做成一行了
做成多行的话,就把每行替换后的这个模板拼接起来就好了,那么我们可以做个循环,每次循环替换掉之后把放在content上的信息拼接一行的html语言
而这个模板我粘到程序里,每个循环定义一个新的模板,数据改%s,后面加数据不就行了?
后面等学了前端html,可以试试复原sxp的网站,从网上把文档荡下来,然后自己写html,写完之后自己做服务器自己跟自己对接
但是肯定不会很华丽,就是一个简单的查询的网站,而且UI不会太好看,大概想一下就能想象到那是个多大的工程
然后就是后面的课程,因为之前U盘资料遗失的原因那些html文件没了,我在考虑要不要直接跳到HTML语言的那章节,等学完HTML可能再回来看
看情况了这个,不过今天就到这吧