- 博客(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关注的人
RSS订阅