WSGI
知识点背景WSGI:用于牛逼的web服务器与网站程序进行交互的协议
交互原理
浏览器访问一个网站,此时会将用户的请求发送给web服务器,web服务器通过WSGI协议调用【应用程序框架】中的【application函数】,调用的同时web服务器会传递两个参数【environ】、【start_response】,其中【environ】是记录用户请求传递的函数信息(如请求页面,提交的验证信息),【start_response】是web服务器的Header和状态处理方法的引用,函数调用完毕以后,web服务器会获取到【响应头】信息,此时程序会继续回到【application】函数中继续处理用户的请求,处理完以后会返回【响应体】给web服务器,web服务器将header和body进行合并后返回给浏览器。
服务器交互123456789# 符合WSGI协议的服务器会要求Web开发者在程序中定义一个函数:application(environ, start_response)# environ:一个包含所有http请求信息的dict对象;# start_response:一个发送Http响应的函数def ...
XML文件读写
XML文件读写背景
XML 指可扩展标记语言(EXtensible Markup Language)
XML 是一种标记语言,很类似 HTML
XML 的设计宗旨是传输数据,而非显示数据
XML 标签没有被预定义。您需要自行定义标签。
XML 被设计为具有自我描述性。
XML 是 W3C 的推荐标准
实例
1234567891011121314151617181920<bookstore> <book category="COOKING"> <title lang="en">Everyday Italian</title> <author>Giada De Laurentiis</author> <year>2005</year> <price>30.00</price> </book> ...
eval知识
eval函数备注:会将字符串中的内容当成有效的表达式执行,并返回结果
1234# 千万不可以将任何用户的输入用eval来使用eval("合理的python内容")# 在输入框中输入"__import__(os).system("touch file")"可以调用系统的命令
jupyter-notebook搭建
背景jupyter-notebook是一个基于web的可实时编辑的python应用程序,即可以当网盘,也可以当做自己平时调试python程序的工具,它依赖于python
搭建
直接命令安装
1pip3 install jupyter
启动时的命令
12# 如果是在root环境下运行,需要添加参数--allow-rootjupyter-notebook --ip=127.0.0.1 --port=9000 --allow-root
(补充)第一次打开127.0.0.1:9000时,通过命令行提示的token值登录,同时在页面的底部有个修改密码的地方,可以设置一个自定义的密码
mysql与python交互
mysql与python交互知识点背景12# 非主键取默认值的方式:defaultinsert into 表名 (主键, 字段1, 字段2, ...) values (0, 值1, default)
同步表数据12345678910111213141516171819202122232425# 从已知表中选择数据插入到新表中insert into 新表(字段1, 字段2, ...) select 字段1, 字段2, ... from 老表 where 条件# 利用链表查询,将A中的pid更新为B中的ID值update A表 as A inner join B表 as B on A.name = B.name set A.pid = B.id# 设置表外键:设置外键时后再插入数据,此时会检查外键关联的表的数据是否存在,不存在就会报错# 数据库中尽量少用外键约束,因为其会极大的降低表更新的效率# 添加的外键必须不是主键,外键指向的键必须未其它表的主键alter table 表1 add foreign key (表1字段名) references 表2(表2字段名)# ...
mysql主从搭建
mysql主从知识点背景
解决问题
【读写分离】、【自动备份】、【负载均衡】
实现原理
mysql服务器之间的主从同步时基于二进制日志机制,主服务器使用二进制日志来记录数据库的变动情况,从服务器通过读取和执行该日志文件来保持和主服务器的数据一致
在使用二进制日志时,主服务器的所有操作都会被记录下来,然后从服务器会接受到该日志的一个副本。从服务器可以执行执行该日志中的哪一类事件(譬如只插入数据或只更新数据),默认会执行日志中的所有语句
每一个服务器会记录关于二进制日志的信息:文件名和已经处理过的语句,这样意味着不同的从服务器可以执行同一个二进制文件的不同部分,并且从服务器可以随时连接或者中断和服务器的连接
主服务器和每一个从服务器都必须配置一个唯一的ID号(在my.cnf文件的【mysqld】模块有一个server-id配置项)。此外每一个从服务器还需要通过change master to语句来配置它要连接的主服务器的IP地址、日志文件名称、该日志文件里面的位置(这些信息存储在主服务器的数据库中)
优点
通过增加从服务器来提高数据库的性能,在主服务器上执行写入和更新,在从服务 ...
mysql事务、视图、索引简介
mysql事务、视图、索引简介知识点函数12# ifnull(sql语句, 为null时的返回值):用于判断返回结果是否为nullselect ifnull(select * from user, "未查询到语句") as result
视图
背景
问题
对于复杂的查询查询,往往是由多个数据表进行关联查询而得到,如果数据库因为需求等原因发生了改变,为了保证查询出来的数据与之前相同,则需要在多个地方进行修改,维护起来特别麻烦
解决方案
创建视图
定义
通俗的讲,视图就是一条select语句执行后返回的结果集。所以我们在创建的时候,主要工作就落在创建这条sql语句上。
视图是对若干张基本表的引用,是一张虚拟的表,用于存放查询语句执行的结果,不存储具体的数据(基本表数据发生改变,视图也会随之发生改变)
优点
减少复杂的sql查询语句,增强可读性,
提高了重用性
数据库重构时并不影响程序的运行,减少程序代码和数据库数据的耦合度
提高安全性,针对不同的用户
代码结构
123456789101112# 视图的存在是为了查询数据的方便,不是为了修改数据# 定义 ...
php环境搭建
搭建教程
命令行安装php
12345apt search phpsudo apt install php# sudo apt install php7.2php -v
有时需要配置php访问mysql,此时需要安装另外的拓展
1sudo apt install php7.0-mysql
安装完成后,需配置php.ini
1234# php的安装路径为:/etc/php/对应版本/# 其配置文件php.ini位置:/etc/php/对应版本/cli/php.inisudo cp /etc/php/7.0/cli/php.ini /etc/php/7.0/cli/php.ini.baksudo vim /etc/php/7.0/cli/php.ini
然后php.ini编辑内容
搜索extension_dir, 将其值修改为php拓展文件的目录,php拓展文件夹的目录位于:/usr/lib/php/php日期文件夹/
extension_dir = “/usr/lib/php/20151012/“
搜索mysqli,然后将该行取消注释,不知是什么原因在ubuntu上安装php ...