自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(137)
  • 收藏
  • 关注

转载 游标操作/pymysql事务/sql注入/索引

游标操作 import pymysql from pymysql.cursors import DictCursor # 1)建立数据库连接对象 conn conn = pymysql.connect(user='root', passwd='root', db='oldboy') # 2)通过 conn 创建操作sql的 游标对象 cursor = conn.cursor(DictC...

2019-09-26 21:47:00 261

转载 Mysql总结

Mysql总结 1、数据库的概念 """ 数据库:库(文件夹)、表(表结构文件、表数据文件(索引结构))、字段(数据的描述)、记录(数据的本体) 分类:效率问题(内存大于硬盘、非关系大于关系、key-value大于sql) 数据库连接:主机、端口、账号、密码、数据库 """ 2、用户 """ 创建对指定数据库权限的用户:grant 权限们 on 数据库名.表名 to 用户名@主机名 id...

2019-09-26 21:47:00 196

转载 pymysql:python操作mysql

pymysql:python操作mysql 安装 >: pip3 install pymysql 增删改查 # 选取操作的模块 pymysql # pymysql连接数据库的必要参数:主机、端口、用户名、密码、数据库 # 注:pymysql不能提供创建数据库的服务,数据库要提前创建 import pymysql # 1)建立数据库连接对象 conn # 2)通过 conn 创建...

2019-09-26 21:46:00 207

转载 事物

事务 # 事务:通常一些业务需要多条sql参与,参与的sql会形参一个执行整体,该整体我们就称之为 事务 # 简而言之:事务 - 就是保护多条执行的sql语句 # 比如:转账就是一个事务:从一个用户将资金转出,再将资金转入到另一个用户 """ 事务的四大特性 1.原子性:事务是一组不可分割的单位,要么同时成功,要么同时不成功 2.一致性:事物前后的数据完整性应该保持一致(数据库的完整性...

2019-09-26 21:39:00 157

转载 视图

视图view # 数据依赖:单表emp """ 1)视图是存在内存中的临时表 2)视图的创建依赖select语句,所有就是select语句操作的结果形参的表 3)视图支持对数据的增删查改 ? 4)视图不允许对视图表的字段做修改 5)视图不仅支持创建,也支持更新与删除 """ # 语法 # 创建视图 mysql>: create view 视图名[(别名们)] as select 语...

2019-09-26 21:37:00 156

转载 联合分组与子查询与all/any区间修饰条件

联合分组 # 数据来源:在单表emp下 # 联合分组:按多个字段综合结果进行分组 # 按 area与port组合后的结果进行分组,只有组合后的结果还一致,才认为是一组 select group_concat(name),area,port from emp group by area,port; 子查询 # 增:insert into 表 select子查询 # 删:delete f...

2019-09-26 21:27:00 145

转载 单表查询与多表查询复习

复习 1.单表查询 增删改查完整语法 select distinct 字段 from 表 where group by having order by limit 比较:> < = 区间:between and | in | not in 逻辑: and or not 相似:like _% 正则:regexp 聚合函数:group_concat(...

2019-09-26 19:14:00 186

转载 排序与连表查询

排序 排序规则 # order by 主排序字段 [asc|desc], 次排序字段1 [asc|desc], ...次排序字段n [asc|desc] 未分组状态下 mysql>: select * from emp; # 按年龄升序 mysql>: select * from emp order by age asc; # 按薪资降序 mysql>: selec...

2019-09-25 21:19:00 348

转载 单表查询

单表查询 """ 增: insert [into] [数据库名.]表名[(字段1[, ..., 字段n])] values (数据1[, ..., 数据n])[, ..., (数据1[, ..., 数据n])]; 删: delete from [数据库名.]表名 [条件]; 改: update [数据库名.]表名 set 字段1=值1[, ..., 字段n=值n...

2019-09-25 21:17:00 156

转载 字段修改表关系回顾

昨日回顾 1.字段修改 alter modify alter change alter add ''|first|after alter drop 2.表关系 一对一:外键存在两边都可以 一对多:外键存在多的一方 多对多:外键必须存在第三张关系表 外键:外键是表的一个字段,值可以重复也可以唯一,值是被关联表被关联字段的值,被关联字段必须有唯一键 fore...

2019-09-25 16:07:00 371

转载 多对多

多对多 # 多对多:一定要创建第三张表(关系表),每一个外键值不唯一,看可以多个外键建立联合唯一 mysql>: drop table author; mysql>: drop table author_detail; mysql>: drop table book; mysql>: drop table publish; # 作者(author):id, n...

2019-09-24 18:54:00 119

转载 一对多

一对多 # 一对多:外键必须放在多的一方,此时外键值不唯一 # 出版社(publish): id,name,address,phone create table publish( id int primary key auto_increment, name varchar(64), address varchar(256), phone char(20)...

2019-09-24 18:45:00 111

转载 字段操作与多表关系

字段操作 create table tf1( id int primary key auto_increment, x int, y int ); # 修改 alter table tf1 modify x char(4) default ''; alter table tf1 change y m char(4) default ''; # 增加 mysql...

2019-09-24 16:42:00 143

转载 昨日回顾

1.数据库配置:my.ini [mysqld][mysql][client] 2.数据库表的引擎:驱动数据的方式 innodb:支持事物,键,锁 myisam:效率高 3.数据类型 整型:整型不规定长度(长度由取值访问决定) 浮点型:(总长度,小数位) decimal(3,3) -0.999~0.999 decimal(5,3) -99.999~99.999 字符串:可变与不可变 cha...

2019-09-24 16:15:00 103

转载 约束

约束 """ primary key:主键,唯一标识,表都会拥有,不设置为默认找第一个 不空,唯一 字段,未标识则创建隐藏字段 foreign key:外键 unique:唯一性数据, 该条字段的值需要保证唯一,不能重复 auto_increment:自增,只能加给key的int类型字段,作为辅助修饰,一个表中只能设置一个自增字段 not null:不为空 - 针对一些字段,如注册时...

2019-09-23 21:29:00 137

转载 mysql支持的数据类型

mysql支持的数据类型 整型 '''类型 tinyint:1字节,取值范围-128~127,默认长度4 smallint:2字节,取值范围 -32768 ~ 32767,默认长度6 mediumint:3字节 int:4字节 -2147483648~2147483647 bigint:8字节 ''' '''约束 unsigned:无符号 zerofill:0填充 ''' # 建表 m...

2019-09-23 21:28:00 143

转载 数据库表的引擎与数据库的模式

创建表的完整语法 # 长度和约束在某些情况下是可以省略的 mysql>: create table 表名 ( 属性名1 类型(长度) 约束, ... 属性名n 类型(长度) 约束 ) engine=引擎 default charset=utf8; 数据库表的引擎:驱动数据的方式 - 数据库优化 # 前提: 引擎是建表是规定, 提供给表使用的, 不是数据库 ...

2019-09-23 19:48:00 247

转载 用户操作与表的修改

用户操作:重点 # 为特定的数据库分配有该数据库 操作权限 的用户 mysql>: grant 权限们 on 数据库.表 to 用户名@'主机名' identified by '密码'; # 1)all:所有权限 # 2)oldboy.*:oldboy数据库下所有表 # 3)oldboy@'localhost':本机可以通过oldboy用户登入 # 4)identified by...

2019-09-23 19:30:00 302

转载 数据库配置

数据库配置 # 通过配置文件统一配置的目的:统一管理 服务端(mysqld) 、客户端(client) # 配置了 mysqld(服务端) 的编码为utf8,那么再创建的数据库,默认编码都采用utf8 # 配置流程 # 1)在mysql安装根目录下,创建配置文件:my.ini # mac下配置文件名叫 my.cnf # 2)设置配置文件内容并保存 [mysql...

2019-09-23 19:04:00 368

转载 数据库基本操作

数据库基本操作 链接数据库 1)游客登录(不一定能登入,登入了也啥都干不了) >: mysql 2)账号密码登陆 >:mysql -uroot -p 再次输入密码,没有任何提示,没有密码直接回车 3)连接指定服务器的mysql >:mysql -h ip地址 -P 端口号 -u 账号 -p eg: >:mysql -hlocalhost -P3306 -uro...

2019-09-20 19:08:00 82

转载 数据库

数据库 什么是数据库 管理数据的系统---安装某种管理数据的系统---管理对象本质是文件 存数据的位置 内存,硬盘 什么是系统 运行在硬件基础上,管理其他软件 数据库的组成 库:存放多张表---文件夹 表:包含多条相同结构的记录---文件 记录:包含多个key-value键值对的一条数据---二进制数据 字段:描述信息---信息本身==key-value ---二进制数据 stu id ...

2019-09-20 15:14:00 336

转载 并发主干内容回顾

并发主干内容回顾 进程: 一个程序运行起来,资源集合. 开启进程的过程: 操作系统开辟一个内存空间, 把代码放进去, 去运行代码(需要cpu). ps:(如果是python的话会把解释器代码也放进去) 特点: 进程的内存空间彼此隔离 主进程要等待所有的子进程结束(原因是:回收僵尸进程) multiprocessing重要用法: join() 等待子进程结束 站在当前进程查看pid ...

2019-09-19 20:59:00 82

转载 协程

协程 python的线程用的是操作系统原生的线程 协程:单线程下实现并发 ​ 并发:切换+保存状态 ​ 多线程:操作系统帮你实现的,如果遇到io切换,执行时间过长也会切换,实现一个雨露均沾的效果. 什么样的协程是有意义的? 遇到io切换的时候才有意义 具体: ​ 协程概念本质是程序员抽象出来的,操作系统根本不知道协程存在,也就说来了一个线程我自己遇到io 我自己线程内部直接切到自己的别的...

2019-09-19 20:58:00 96

转载 socket多线程

socket多线程 客户端 import socket from threading import Thread,currentThread def client_demo(): client=socket.socket() client.connect(('127.0.0.1',8081)) while True: msg=f'{current...

2019-09-19 20:26:00 105

转载 进程池和线程池

进程池和线程池 池的功能是限制进程数和线程数 什么时候限制? 当并发的任务数量远远大于计算机所能承受的范围,即无法一次性开启过多的任务数量 就应该考虑去限制进程数或线程数,从而保证服务器不崩 提交任务的两种方式: 同步:提交了一个任务,必须等任务执行完了(拿到返回值),才能执行下一行代码 异步:提交了一个任务,不要等执行完了,可以直接执行下一行代码 from concurrent.fut...

2019-09-19 18:33:00 104

转载 线程定时器

线程定时器 Timer: 隔一定时间调用一个函数,如果想实现每隔一段时间就调用一个函数的话,就要在Timer调用的函数中,再次设置Timer。Timer是Thread的一个派生类 from threading import Timer import time def task(): print('线程执行了') time.sleep(2) print('线程结束...

2019-09-19 15:28:00 92

转载 线程queue

线程queue queue队列:使用import queue,用法与进程Queue一样 queue.Queue() 先进先出 import queue q=queue.Queue() q.put('123') q.put('wasd') q.put('435') print(q.get()) print(q.get()) print(q.get()) 123 wasd 435 que...

2019-09-19 15:21:00 141

转载 昨日回顾

昨日回顾 线程锁 本质就是一个互斥锁 使用目的:保证数据的安全 死锁问题 线程1抢到了锁A没释放 线程2抢到了锁B没释放 线程1往下执行需要锁B 线程2往下执行需要锁A 解决方法:递归锁(RLock) 特点:只有同一个线程下可以多次acquire,acquire了几次就要release几次 信号量 实现:定制了锁的个数,也就意味着最多有几个线程可以抢到锁头 GIL 什么是GIL: Cpy...

2019-09-19 14:56:00 91

转载 多线程vs多进程

多线程vs多进程 计算密集型 from threading import Thread from multiprocessing import Process import time #计算密集型 def work1(): res=0 for i in range(100000000): res*=i if __name__ == '__main__': ...

2019-09-18 16:14:00 64

转载 GIL

GIL GIL介绍 在Cpython解释器中有一把GIL锁(全局解释器锁),GIL锁本质是一把互斥锁 导致了同一进程下,同一时间只能运行一个线程,无法利用多核优势 同一个进程下多个线程只能实现并发不能实现并行 为什么要有GIL? 因为Cpython自带的垃圾回收机制不是线程安全的,所有要有GIL锁 案例分析 我们有四个任务需要处理,处理方式肯定是要玩出并发的效果,解决方案可以是: 方案一...

2019-09-18 15:59:00 94

转载 信号量Semaphore

信号量Semaphore 同进程的一样 Semaphore管理一个内置的计数器, 每当调用acquire()时内置计数器-1; 调用release() 时内置计数器+1; 计数器不能小于0;当计数器为0时,acquire()将阻塞线程直到其他线程调用release()。 from threading import Thread,currentThread,Semaphore import...

2019-09-18 15:37:00 84

转载 线程锁与死锁问题

线程锁 多线程修改数据会造成混乱 from threading import Thread import time x = 0 def task(): global x for i in range(100000): # 最少10万级别才能看出来 x = x+1 # 有可能右边的x刚拿到了0, # 发生线程不安全的原因: ...

2019-09-18 15:24:00 179

转载 昨日回顾

昨日回顾 cpu最小的执行单位:线程 进程: 资源集合 线程: 执行单位 操作系统--->工厂 进程--->车间 线程(cpu)--->流水线(电源) 进程的内存空间彼此隔离 线程共享同一份资源 线程开启的两种方法 #第一种 from threading import Thread def task(): pass if __name__ == '__mai...

2019-09-18 14:51:00 95

转载 线程守护进程

守护进程 守护进程守护的是进程的运行周期 from threading import Thread,enumerate,currentThread import time def task(): print('守护线程开始') print(currentThread()) time.sleep(20) # print('守护进程结束') def tas...

2019-09-17 16:03:00 159

转载 线程其他相关用法

线程其他相关用法 Thread实例对象的方法 # isAlive(): 返回线程是否活动的。 # getName(): 返回线程名。 # setName(): 设置线程名。 threading模块提供的一些方法: # threading.currentThread(): 返回当前的线程变量。 # threading.enumerate(): 返回一个包含正在运行的线...

2019-09-17 15:56:00 83

转载 线程的join方法

线程的join方法 from threading import Thread import time def task(): print('子线程 start') time.sleep(2) print('子进程 end') t=Thread(target=task) t.start() t.join() print('主进程') from threading...

2019-09-17 15:43:00 120

转载 子线程vs子进程创建速度

子线程vs子进程创建速度 from threading import Thread from multiprocessing import Process import time def task(name): print(f'{name} is running') time.sleep(2) print(f'{name} is end') if __name...

2019-09-17 15:29:00 199

转载 线程开启的两种方式

线程开启的两种方式 #第一种 from threading import Thread import time def task(): print('线程 start') time.sleep(2) print('线程 end') if __name__ == '__main__': t=Thread(target=task) t.start()...

2019-09-17 15:02:00 186

转载 线程

线程内容 初始别线程 在传统操作系统中,每个进程有一个地址空间,而且默认就有一个控制线程,cpu真正的执行单位是线程.在工厂中, 每个车间都有房子,而且每个车间默认就有一条流水线. 操作系统 ===> 工厂 进程 ===> 车间 线程 ===> 流水线 cpu ===> 电源 线程:cpu最小的执行单位 进程:资源集合/资源单位 线程运行 = 运行代码 进程运行 ...

2019-09-17 14:54:00 98

转载 初识线程

初识线程 在传统操作系统中,每个进程都有一个地址空间,而且默认就有一个控制线程 在工厂中,每个车间都有房子,而且每个车间默认就有一条流水线 操作系统===>工厂 进程===>车间 线程===>流水线 cpu===>电源 线程:cpu最小的执行单位 进程:资源集合/资源单位 线程运行=运行代码 进程运行=各种资源+线程 转载于:https://www.cnblo...

2019-09-16 17:07:00 78

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除