- 博客(137)
- 收藏
- 关注
转载 游标操作/pymysql事务/sql注入/索引
游标操作import pymysqlfrom pymysql.cursors import DictCursor# 1)建立数据库连接对象 connconn = pymysql.connect(user='root', passwd='root', db='oldboy')# 2)通过 conn 创建操作sql的 游标对象cursor = conn.cursor(DictC...
2019-09-26 21:47:00 198
转载 Mysql总结
Mysql总结1、数据库的概念"""数据库:库(文件夹)、表(表结构文件、表数据文件(索引结构))、字段(数据的描述)、记录(数据的本体)分类:效率问题(内存大于硬盘、非关系大于关系、key-value大于sql)数据库连接:主机、端口、账号、密码、数据库"""2、用户"""创建对指定数据库权限的用户:grant 权限们 on 数据库名.表名 to 用户名@主机名 id...
2019-09-26 21:47:00 133
转载 pymysql:python操作mysql
pymysql:python操作mysql安装>: pip3 install pymysql增删改查# 选取操作的模块 pymysql# pymysql连接数据库的必要参数:主机、端口、用户名、密码、数据库# 注:pymysql不能提供创建数据库的服务,数据库要提前创建import pymysql# 1)建立数据库连接对象 conn# 2)通过 conn 创建...
2019-09-26 21:46:00 146
转载 事物
事务# 事务:通常一些业务需要多条sql参与,参与的sql会形参一个执行整体,该整体我们就称之为 事务# 简而言之:事务 - 就是保护多条执行的sql语句# 比如:转账就是一个事务:从一个用户将资金转出,再将资金转入到另一个用户""" 事务的四大特性1.原子性:事务是一组不可分割的单位,要么同时成功,要么同时不成功2.一致性:事物前后的数据完整性应该保持一致(数据库的完整性...
2019-09-26 21:39:00 111
转载 视图
视图view# 数据依赖:单表emp"""1)视图是存在内存中的临时表2)视图的创建依赖select语句,所有就是select语句操作的结果形参的表3)视图支持对数据的增删查改 ?4)视图不允许对视图表的字段做修改5)视图不仅支持创建,也支持更新与删除"""# 语法# 创建视图mysql>: create view 视图名[(别名们)] as select 语...
2019-09-26 21:37:00 112
转载 联合分组与子查询与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 102
转载 单表查询与多表查询复习
复习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 124
转载 排序与连表查询
排序排序规则# 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 282
转载 单表查询
单表查询"""增:insert [into] [数据库名.]表名[(字段1[, ..., 字段n])] values (数据1[, ..., 数据n])[, ..., (数据1[, ..., 数据n])];删:delete from [数据库名.]表名 [条件];改:update [数据库名.]表名 set 字段1=值1[, ..., 字段n=值n...
2019-09-25 21:17:00 110
转载 字段修改表关系回顾
昨日回顾1.字段修改alter modifyalter changealter add ''|first|afteralter drop2.表关系一对一:外键存在两边都可以 一对多:外键存在多的一方 多对多:外键必须存在第三张关系表 外键:外键是表的一个字段,值可以重复也可以唯一,值是被关联表被关联字段的值,被关联字段必须有唯一键 fore...
2019-09-25 16:07:00 291
转载 多对多
多对多# 多对多:一定要创建第三张表(关系表),每一个外键值不唯一,看可以多个外键建立联合唯一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 78
转载 一对多
一对多# 一对多:外键必须放在多的一方,此时外键值不唯一# 出版社(publish): id,name,address,phonecreate table publish( id int primary key auto_increment, name varchar(64), address varchar(256), phone char(20)...
2019-09-24 18:45:00 68
转载 字段操作与多表关系
字段操作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 96
转载 昨日回顾
1.数据库配置:my.ini[mysqld][mysql][client]2.数据库表的引擎:驱动数据的方式innodb:支持事物,键,锁myisam:效率高3.数据类型整型:整型不规定长度(长度由取值访问决定)浮点型:(总长度,小数位)decimal(3,3) -0.999~0.999decimal(5,3) -99.999~99.999字符串:可变与不可变cha...
2019-09-24 16:15:00 66
转载 约束
约束"""primary key:主键,唯一标识,表都会拥有,不设置为默认找第一个 不空,唯一 字段,未标识则创建隐藏字段foreign key:外键unique:唯一性数据, 该条字段的值需要保证唯一,不能重复auto_increment:自增,只能加给key的int类型字段,作为辅助修饰,一个表中只能设置一个自增字段not null:不为空 - 针对一些字段,如注册时...
2019-09-23 21:29:00 96
转载 mysql支持的数据类型
mysql支持的数据类型整型'''类型tinyint:1字节,取值范围-128~127,默认长度4smallint:2字节,取值范围 -32768 ~ 32767,默认长度6mediumint:3字节int:4字节 -2147483648~2147483647bigint:8字节''''''约束unsigned:无符号zerofill:0填充'''# 建表m...
2019-09-23 21:28:00 91
转载 数据库表的引擎与数据库的模式
创建表的完整语法# 长度和约束在某些情况下是可以省略的mysql>: create table 表名 ( 属性名1 类型(长度) 约束, ... 属性名n 类型(长度) 约束) engine=引擎 default charset=utf8;数据库表的引擎:驱动数据的方式 - 数据库优化# 前提: 引擎是建表是规定, 提供给表使用的, 不是数据库...
2019-09-23 19:48:00 186
转载 用户操作与表的修改
用户操作:重点# 为特定的数据库分配有该数据库 操作权限 的用户mysql>: grant 权限们 on 数据库.表 to 用户名@'主机名' identified by '密码';# 1)all:所有权限# 2)oldboy.*:oldboy数据库下所有表# 3)oldboy@'localhost':本机可以通过oldboy用户登入# 4)identified by...
2019-09-23 19:30:00 251
转载 数据库配置
数据库配置# 通过配置文件统一配置的目的:统一管理 服务端(mysqld) 、客户端(client)# 配置了 mysqld(服务端) 的编码为utf8,那么再创建的数据库,默认编码都采用utf8# 配置流程# 1)在mysql安装根目录下,创建配置文件:my.ini# mac下配置文件名叫 my.cnf# 2)设置配置文件内容并保存[mysql...
2019-09-23 19:04:00 329
转载 数据库基本操作
数据库基本操作链接数据库1)游客登录(不一定能登入,登入了也啥都干不了)>: mysql2)账号密码登陆>:mysql -uroot -p再次输入密码,没有任何提示,没有密码直接回车3)连接指定服务器的mysql>:mysql -h ip地址 -P 端口号 -u 账号 -peg:>:mysql -hlocalhost -P3306 -uro...
2019-09-20 19:08:00 60
转载 数据库
数据库什么是数据库管理数据的系统---安装某种管理数据的系统---管理对象本质是文件存数据的位置内存,硬盘什么是系统运行在硬件基础上,管理其他软件数据库的组成库:存放多张表---文件夹表:包含多条相同结构的记录---文件记录:包含多个key-value键值对的一条数据---二进制数据字段:描述信息---信息本身==key-value ---二进制数据stuid ...
2019-09-20 15:14:00 294
转载 并发主干内容回顾
并发主干内容回顾进程:一个程序运行起来,资源集合.开启进程的过程:操作系统开辟一个内存空间, 把代码放进去, 去运行代码(需要cpu).ps:(如果是python的话会把解释器代码也放进去)特点:进程的内存空间彼此隔离主进程要等待所有的子进程结束(原因是:回收僵尸进程)multiprocessing重要用法:join() 等待子进程结束站在当前进程查看pid...
2019-09-19 20:59:00 53
转载 协程
协程python的线程用的是操作系统原生的线程协程:单线程下实现并发 并发:切换+保存状态 多线程:操作系统帮你实现的,如果遇到io切换,执行时间过长也会切换,实现一个雨露均沾的效果.什么样的协程是有意义的?遇到io切换的时候才有意义具体: 协程概念本质是程序员抽象出来的,操作系统根本不知道协程存在,也就说来了一个线程我自己遇到io 我自己线程内部直接切到自己的别的...
2019-09-19 20:58:00 60
转载 socket多线程
socket多线程客户端import socketfrom threading import Thread,currentThreaddef client_demo(): client=socket.socket() client.connect(('127.0.0.1',8081)) while True: msg=f'{current...
2019-09-19 20:26:00 74
转载 进程池和线程池
进程池和线程池池的功能是限制进程数和线程数什么时候限制?当并发的任务数量远远大于计算机所能承受的范围,即无法一次性开启过多的任务数量就应该考虑去限制进程数或线程数,从而保证服务器不崩提交任务的两种方式:同步:提交了一个任务,必须等任务执行完了(拿到返回值),才能执行下一行代码异步:提交了一个任务,不要等执行完了,可以直接执行下一行代码from concurrent.fut...
2019-09-19 18:33:00 62
转载 线程定时器
线程定时器Timer: 隔一定时间调用一个函数,如果想实现每隔一段时间就调用一个函数的话,就要在Timer调用的函数中,再次设置Timer。Timer是Thread的一个派生类from threading import Timerimport timedef task(): print('线程执行了') time.sleep(2) print('线程结束...
2019-09-19 15:28:00 65
转载 线程queue
线程queuequeue队列:使用import queue,用法与进程Queue一样queue.Queue() 先进先出import queueq=queue.Queue()q.put('123')q.put('wasd')q.put('435')print(q.get())print(q.get())print(q.get())123wasd435que...
2019-09-19 15:21:00 88
转载 昨日回顾
昨日回顾线程锁本质就是一个互斥锁使用目的:保证数据的安全死锁问题线程1抢到了锁A没释放线程2抢到了锁B没释放线程1往下执行需要锁B线程2往下执行需要锁A解决方法:递归锁(RLock)特点:只有同一个线程下可以多次acquire,acquire了几次就要release几次信号量实现:定制了锁的个数,也就意味着最多有几个线程可以抢到锁头GIL什么是GIL:Cpy...
2019-09-19 14:56:00 64
转载 多线程vs多进程
多线程vs多进程计算密集型from threading import Threadfrom multiprocessing import Processimport time#计算密集型def work1(): res=0 for i in range(100000000): res*=iif __name__ == '__main__':...
2019-09-18 16:14:00 44
转载 GIL
GILGIL介绍在Cpython解释器中有一把GIL锁(全局解释器锁),GIL锁本质是一把互斥锁导致了同一进程下,同一时间只能运行一个线程,无法利用多核优势同一个进程下多个线程只能实现并发不能实现并行为什么要有GIL?因为Cpython自带的垃圾回收机制不是线程安全的,所有要有GIL锁案例分析我们有四个任务需要处理,处理方式肯定是要玩出并发的效果,解决方案可以是:方案一...
2019-09-18 15:59:00 62
转载 信号量Semaphore
信号量Semaphore同进程的一样Semaphore管理一个内置的计数器,每当调用acquire()时内置计数器-1;调用release() 时内置计数器+1;计数器不能小于0;当计数器为0时,acquire()将阻塞线程直到其他线程调用release()。from threading import Thread,currentThread,Semaphoreimport...
2019-09-18 15:37:00 59
转载 线程锁与死锁问题
线程锁多线程修改数据会造成混乱from threading import Threadimport timex = 0def task(): global x for i in range(100000): # 最少10万级别才能看出来 x = x+1 # 有可能右边的x刚拿到了0, # 发生线程不安全的原因: ...
2019-09-18 15:24:00 128
转载 昨日回顾
昨日回顾cpu最小的执行单位:线程进程: 资源集合线程: 执行单位操作系统--->工厂进程--->车间线程(cpu)--->流水线(电源)进程的内存空间彼此隔离线程共享同一份资源线程开启的两种方法#第一种from threading import Threaddef task(): passif __name__ == '__mai...
2019-09-18 14:51:00 66
转载 线程守护进程
守护进程守护进程守护的是进程的运行周期from threading import Thread,enumerate,currentThreadimport timedef task(): print('守护线程开始') print(currentThread()) time.sleep(20) # print('守护进程结束')def tas...
2019-09-17 16:03:00 112
转载 线程其他相关用法
线程其他相关用法Thread实例对象的方法 # isAlive(): 返回线程是否活动的。 # getName(): 返回线程名。 # setName(): 设置线程名。threading模块提供的一些方法: # threading.currentThread(): 返回当前的线程变量。 # threading.enumerate(): 返回一个包含正在运行的线...
2019-09-17 15:56:00 60
转载 线程的join方法
线程的join方法from threading import Threadimport timedef 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 86
转载 子线程vs子进程创建速度
子线程vs子进程创建速度from threading import Threadfrom multiprocessing import Processimport timedef task(name): print(f'{name} is running') time.sleep(2) print(f'{name} is end')if __name...
2019-09-17 15:29:00 149
转载 线程开启的两种方式
线程开启的两种方式#第一种from threading import Threadimport timedef task(): print('线程 start') time.sleep(2) print('线程 end')if __name__ == '__main__': t=Thread(target=task) t.start()...
2019-09-17 15:02:00 146
转载 线程
线程内容初始别线程在传统操作系统中,每个进程有一个地址空间,而且默认就有一个控制线程,cpu真正的执行单位是线程.在工厂中, 每个车间都有房子,而且每个车间默认就有一条流水线.操作系统 ===> 工厂进程 ===> 车间线程 ===> 流水线cpu ===> 电源线程:cpu最小的执行单位进程:资源集合/资源单位线程运行 = 运行代码进程运行 ...
2019-09-17 14:54:00 67
转载 初识线程
初识线程在传统操作系统中,每个进程都有一个地址空间,而且默认就有一个控制线程在工厂中,每个车间都有房子,而且每个车间默认就有一条流水线操作系统===>工厂进程===>车间线程===>流水线cpu===>电源线程:cpu最小的执行单位进程:资源集合/资源单位线程运行=运行代码进程运行=各种资源+线程转载于:https://www.cnblo...
2019-09-16 17:07:00 53
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人