import xlwings as xw
app = xw.APP(visible = False,add_book = False) #激活excel app
wb = app.books.open(文件位置) #打开某个excel工作本
sht = wb.sheet[sheet] #打开工作薄
wb.save(‘地址’) #保存工作本的地址
wb.close() #关闭工作本
app.quit #退出app
sht.range(1,1).value = [num] #插入1-1的空白格
sht.raneg('A1:c1').value = [num] #插入A1到c1的空白格,即横向插入
sht.range(a1).options(transpose=True).value #插入A1到AX的空白格,即竖向输入
a=sht.range(a:b).value #无要求
total_heading=sht2.range('a2:a5')
total_heading.merge() #合并单元格a2到a5
sets1=sht2.range('a1:b14')
sets1.api.Font.Name='微软雅黑' #设置字体
sets1.api.Font.Size=12 #设置字体大小
sets1.api.HorizontalAlignment= -4108 #设置字体位置
sets1.api.Font.Bold = True #设置颜色
import requests url = (从网页检查[F12]中获取) headers = {"User-Agent":"[同上,UA伪装]"} # 创建响应对象 response = requests.post(url=post_url,headers=headers) 或者 requests.get(url=post_url,data=data,headers=headers) #获取响应内容 response.content 或者 response.text
beautiful soup 4
from bs4 import BeautifulSoup import bs4 fp = open('xxx','r',encoding='utf-8') #将本地html文档加载到对象中 soup = BeautifulSoup(f[,'lxml']) page_text = response.text #将互联网资源加载到该对象中 soup = BeautifulSoup(page_text,'lxml') #beautifulsoup方法/首先tagname 有:div、html、head、body、ul、li、a、p soup.tagName #返回第一次出现的对应标签 soup.find() #等同于soup.tagName soup.find(tagName,class_='name') #可以进行属性定位 soup.find_all() #返回所有的对应标签装成的一个列表 soup.select() #选择器去定位,类选择器'.class',标签'tag' soup.select('.tang > ul > li >a') #层级选择器,表示按顺序去寻找a层级 soup.select('.tang > ul a') #用空格表示多个层级,跨层级去寻找a层级 soup.text/content #获取标签中所有文本内容,不属于直系也可以,因为是全部获取,content不会乱码 soup.string #获取直系中所有文本内容,必须要直系 soup.a['href] #获取标签中的属性内容
etree(Xpath)
from lxml import etree etree.parse(filePath) #将本地文件html加载到etree对象 etree.HTML('page_text') #将互联网文件加载到etree对象中 tree.path('/html/head/title') #根据层级顺序进行定位 tree.path('/html//div') or tree.path('//div')#跨层级顺序进行定位 tree.path('//div[@class='song']') #属性定位 tree.path('//div[@class='song']/p[1]') #索引定位,且从1开始 /text() #获取直系文本内容 //text() #获取所有文本内容 /@属性Name #获取属性
正则表达式
- show databases 展示数据库
- create database <数据库名> 创建数据库
- use <数据库名> 使用数据库
- select database() 选择数据库
- drop database 删除数据库
- show tables 展示列表
- create table 表名{字段1 字段类型1,字段2 字段类型2,......} 创建列表
- desc 表名 查询表结构
- alter table 表名 add/modify/change/drop/rename to ... 对表进行增加字段/修改字段类型/修改字段名称类型/修改表名
DML增加数据
- insert into [表名] (字段1,字段2,...) [values] (值1,值2,....) 给指定字段添加数据
- insert into [表名] values (值1,值2,...) 给全部字段增加数据
DML修改数据
- update [表名] set 字段名1=值1,字段名2=值2,... [where 条件] 修改数据,不带Where则是更新字段中的所有值
DML删除数据
- delete from [表名] [where 条件] 删除数据,不带where则是删除整张表数据
编写顺序: select__from__where__group by__having__order by__limit 执行顺序:from-->where-->group by-->select-->having-->order by-->limit
- select [字段列表] / [字段名] [as] 别名
- from [表名]
- where [条件列表] 运算符/betweenn..and../in/like(筛选格式)
- group by [分组的字段列表]
- having [分组后的条件]
- order by [升序asc]/[降序desc]
- limit [分页参数]
用户管理
- create user 用户名'@'主机名' dentified by '密码'
- alter user '用户名'@'主机名' identified by '密码'
- drop user '用户名'@'主机名'
程序控制
- grant 权限列表 on 数据库名.表名 to '用户名'@'主机名'
- revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名'
- concat(s1,s2,..) 字符串的拼接
- lower(str) 转换成小写
- upper(str) 转换成大写
- lpad/rpad(str,n,pad) 左/右填充,用字符串pad对str左/右填充,达到n个字符串长度**
- trim(str) 去掉头尾的空格
- substring(str,start,len) 返回字符串从start位置起len个长度的字符串
- ceil(X) 向上取整
- floor(X) 向下取整
- mod(x,y) 返回X/Y的模,即余数
- rand() 返回0-1的随机数
- round(x,y) 求参数X的四舍五入的值,保留y位小数
- curdate() 返回当前日期
- curtime() 返回当前时间
- now() 返回当前日期和时间
- year/month/day(date) 获取指定date的年份/月份/日期
- date_add(date,time) 返回一个日期加上一个时间后的值
- datediff(x,y) 返回x到y之间的天数
- if 如果value为true,则返回t,否则返回f
- ifnull 如果value不为空,返回value1,否则返回value2
- case when [var1] then [res1]... else [reslast] end 如果val1为true,返回res1,(中间可附加其他条件)否则返回reslast
- case [expr] when [var1] then [res1]... else [reslast] end 如果exp的值等于val1,返回res1,(中间可附件其他条件)否则返回reslast
默认设置
- not null 非空约束
- nuique 唯一约束
- primary key 主键约束
- default 默认约束
- check 检查约束
- foreign key 外键约束 语法:alter table [表名] add constraint 外键名称 foreign key(外键字段名) references 主表(主表列名)
外键约束
- no action 检查是否有外键,有则不允许删除/更新
- restrict 检查是否有外键,有则不允许删除/更新
- cascade 检查是否有外键,有则也允许删除/更新
- set null 删除时,检查是否有外键,有则设置外键值为NULL
- set default 变更时,设置外键为一个默认的值 语法:alter table [表名] add constraint [外键名称] foreign key (外键字段) references 主表名(主表字段名) on update cascade on delete cascade
多表关系:一对一(指向一个外键),一对多(指向一个外键),多对多(至少包含两个外键)/ 一对多:在多的一方设置外键,关联一方的主键 多对多:建立中间表,中间表包含两个外键,关联两张表的主键/ 一对一:用于表结构拆分,在其中任何一方设置外键(unique),关联另外一方的主键 1.内连接 查询的是交集关系
- select [字段列表] from [表1] [表2] where 条件 隐式内连接
- select [字段列表] from [表1] inner join [表2] on 条件 显式外连接
2.外连接 查询的是左右部分
- select [字段列表] from [表1] left outer join [表2] on 条件 显示表1所有数据包含交集
- select [字段列表] from [表1] right outer join [表2] on 条件 显示表2所有数据包含交集
3.自连接(其实就是对一个表进行的操作) 也可以是内连接,也可以是外连接
- select [字段列表] from [表1] [别名1] join [表2] [别名2] on [条件]
- select [字段列表] from [表1] [别名1] outer left join [表2] [别名2] on [条件]
- (ps:一定要有别名,因为是对一张表进行操作,否则分不清是是什么)
4.联合查询
- select [字段列表] from [表A]...
union[all]...
select [字段列表] from [表B]...5.子查询(嵌套查询) 标签子查询: =、<、>、>=、<= 返回的结果是单个的值 列子查询:in、not in、any、some、all 返回多列 行子查询:=、<>、in、not in 返回多行 表子查询:in 返回多行多列 select [字段列表] from [表名] column1 = (select column1 from t2)
操作技巧:列出需要用的表,连接的条件以及查询条件即可!
1.事务操作
start transaction 开启事务 commit/rollback 提交/回滚事务
2.事务四大特性
原子性(atomicity)、一致性(consistency)、隔离性(isolation)、持久性(duration)
3.并发事务
脏读 一个事务读取到另一个事务还未提交的数据 不可重复读 一个事务先后读取同一条记录的结果不同 幻读 一个事务查询数据时,无对应数据,但插入数据时,又发现数据已存在
4.事务隔离级别
效率:ru>rc>rr>s 安全级别:s>rr>rc>ru read uncommited 会出现脏读、不可重复读、幻读 read committed 会出现不可重复读、幻读 repeatable read 会出现幻读 serializable 啥都不会出现
1.语法
show engines create table xx engine = (innodb);
2.存储引擎特点
3.存储引擎应用 innodb:存储业务系统中对于事务、数据完整性要求较高的核心数据。 myisam:存储业务系统的非核心业务。
本文章使用limfx的vscode插件快速发布