摘要: 数据类型 存储引擎决定了表的类型,而表内存放的数据也要有不同的类型,每种数据类型都有自己的宽度,但宽度是可选的 详细参考: http://www.runoob.com/mysql/mysql-data-types.html http://dev.mysql.com/doc/refman/5.7/en 阅读全文
posted @ 2018-07-04 15:18 游走在边缘的人 阅读(485) 评论(0) 推荐(0) 编辑
摘要: ## pymysql的安装 pip3 install pymysql ## pymysql的链接、执行sql、关闭(游标) import pymysql user=input('用户名: ').strip() pwd=input('密码: ').strip() #链接 conn=pymysql.connect( host='localhost', user='root',... 阅读全文
posted @ 2018-07-04 15:17 游走在边缘的人 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 一、表关系 年级表:class_grade create table class_grade( gid int primary key auto_increment, gname varchar(20) not null ); insert into class_grade(gname) values ('一年级'), ('二年级'), ('三年级... 阅读全文
posted @ 2018-07-04 15:15 游走在边缘的人 阅读(397) 评论(0) 推荐(0) 编辑
摘要: 视图 视图是一个虚拟表(非真实存在),其本质是【根据SQL语句获取动态的数据集,并为其命名】,用户使用时只需使用【名称】即可获取结果集,可以将该结果集当做表来使用。 一、创建视图 #语法:CREATE VIEW 视图名称 AS SQL语句 create view teacher_view as select tid from teacher where tname='李平老师'; #于是... 阅读全文
posted @ 2018-07-04 15:10 游走在边缘的人 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 单表查询 单表查询语法: select distinct 字段1,字段2,字段3 from 库.表 where 条件 group by 分组条件 having 过滤 order by 排序字段 limit n; 关键字执行顺序(重点) 1、from 2、where 3、group by 4、having 5、select 7、disti... 阅读全文
posted @ 2018-07-04 15:09 游走在边缘的人 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 约束条件 约束条件与数据类型的宽度一样,都是可选参数 作用:用于保证数据的完整性和一致性 主要分为: PRIMARY KEY (PK) 标识该字段为该表的主键,可以唯一的标识记录 FOREIGN KEY (FK) 标识该字段为该表的外键 NOT NULL 标识该字段不能为空 UNIQUE KEY (UK) 标识该字段的值是唯一的 AUTO_INCREMENT ... 阅读全文
posted @ 2018-07-04 15:08 游走在边缘的人 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 库 库分为以下几种: information_schema: 虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息、列信息、权限信息、字符信息等 performance_schema: MySQL 5.5开始新增一个数据库:主要用于收集数据库服务器性能参数,记录处理查询请求时发生的各种事件、锁等现象 mysql: 授权库,主要存储系统用户的权限信息 test: MySQL... 阅读全文
posted @ 2018-07-04 15:07 游走在边缘的人 阅读(97) 评论(0) 推荐(0) 编辑
摘要: 存储引擎 存储引擎指的是表的类型 查看支持的存储引擎: MariaDB [(none)]> show engines\G #查看所有支持的存储引擎 MariaDB [(none)]> show variables like 'storage_engine%'; #查看正在使用的存储引擎 存储引擎分为以下几种: 1、InnoDB 存储引擎 支持事务,其设计目标主要面向联机事务处理(O... 阅读全文
posted @ 2018-07-04 15:07 游走在边缘的人 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 数据库 1 什么是数据(Data) 描述事物的符号记录称为数据,描述事物的符号既可以是数字,也可以是文字、图片,图像、声音、语言等,数据由多种表现形式,它们都可以经过数字化后存入计算机 在计算机中描述一个事物,就需要抽取这一事物的典型特征,组成一条记录,就相当于文件里的一行内容,如: 1 egon,male,18,1999,山东,计算机系,2017,oldboy 单纯的一条记录并没有任... 阅读全文
posted @ 2018-07-04 15:06 游走在边缘的人 阅读(244) 评论(0) 推荐(0) 编辑
摘要: sql基本语句 有了mysql这个数据库软件,就可以将程序员从对数据的管理中解脱出来,专注于对程序逻辑的编写 mysql服务端软件即mysqld帮我们管理好文件夹以及文件,前提是作为使用者的我们,需要下载mysql的客户端,或者其他模块来连接到mysqld,然后使用mysql软件规定的语法格式去提交自己命令,实现对文件夹或文件的管理。该语法即sql(Structured Query Langu... 阅读全文
posted @ 2018-07-04 15:06 游走在边缘的人 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 协程 协程:是单线程下的并发,又称微线程,纤程。英文名Coroutine。一句话说明什么是线程:协程是一种用户态的轻量级线程,即协程是由用户程序自己控制调度的 需要强调的是: 1. python的线程属于内核级别的,即由操作系统控制调度(如单线程遇到io或执行时间过长就会被迫交出cpu执行权限,切换其他线程运行) 2. 单线程内开启协程,一旦遇到io,就会从应用程序级别(而非操作系统)控制切... 阅读全文
posted @ 2018-07-04 14:59 游走在边缘的人 阅读(282) 评论(0) 推荐(0) 编辑
摘要: 开启进程的两种方法 使用multiprocessing模块, multiprocessing模块用来开启子进程,并在子进程中执行我们定制的任务(比如函数),该模块与多线程模块threading的编程接口类似。multiprocessing模块的功能众多:支持子进程、通信和共享数据、执行不同形式的同步,>提供了Process、Queue、Pipe、Lock等组件。 Process的类: 创建进... 阅读全文
posted @ 2018-07-04 14:58 游走在边缘的人 阅读(330) 评论(0) 推荐(0) 编辑
摘要: join方法 在主进程运行过程中如果想并发地执行其他的任务,我们可以开启子进程,此时主进程的任务与子进程的任务分两种情况 情况一:在主进程的任务与子进程的任务彼此独立的情况下,主进程的任务先执行完毕后,主进程还需要等待子进程执行完毕,然后统一回收资源。 情况二:如果主进程的任务在执行到某一个阶段时,需要等待子进程执行完毕后才能继续执行,就需要有一种机制能够让主进程检测子进程是否运行完毕,在子... 阅读全文
posted @ 2018-07-04 14:58 游走在边缘的人 阅读(262) 评论(0) 推荐(0) 编辑
摘要: IO模型 IO主要分为:阻塞IO,非阻塞IO,多路复用IO,异步IO IO模型一般会经历两个阶段: 1)等待数据准备 (Waiting for the data to be ready) 2)将数据从内核拷贝到进程中(Copying the data from the kernel to the process) 阻塞IO(blocking IO) 在linux中,默认情况下所有的soc... 阅读全文
posted @ 2018-07-04 14:58 游走在边缘的人 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 进程池与线程池 属性介绍 concurrent.futures模块提供了高度封装的异步调用接口 ThreadPoolExecutor:线程池,提供异步调用 ProcessPoolExecutor: 进程池,提供异步调用 基本方法 1、submit(fn, *args, **kwargs) 异步提交任务 2、map(func, *iterables, timeout=None, chunk... 阅读全文
posted @ 2018-07-04 14:57 游走在边缘的人 阅读(241) 评论(0) 推荐(0) 编辑
摘要: 守护进程 关于守护进程: 其一:守护进程会在主进程代码执行结束后就终止 其二:守护进程内无法再开启子进程,否则抛出异常:AssertionError: daemonic processes are not allowed to have children #!/usr/bin/env python3 # -*- coding:utf-8 -*- from multiprocessing ... 阅读全文
posted @ 2018-07-04 14:57 游走在边缘的人 阅读(145) 评论(0) 推荐(0) 编辑
摘要: GIL介绍 GIL本质就是一把互斥锁,既然是互斥锁,所有互斥锁的本质都一样,都是将并发运行变成串行,以此来控制同一时间内共享数据只能被一个任务所修改,进而保证数据安全 如果多个线程的target=work,那么执行流程是: 多个线程先访问到解释器的代码,即拿到执行权限,然后将target的代码交给解释器的代码去执行 解释器的代码是所有线程共享的,所以垃圾回收线程也可能访问到解释器的代码而去... 阅读全文
posted @ 2018-07-04 14:56 游走在边缘的人 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 死锁 所谓死锁: 是指两个或两个以上的进程或线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程,如下: #!/usr/bin/env python3 # -*- coding:utf-8 -*- from threading import Thread,Lock import ... 阅读全文
posted @ 2018-07-04 14:56 游走在边缘的人 阅读(738) 评论(0) 推荐(0) 编辑
摘要: 信号量 信号量也是一把锁,可以指定信号量为5,对比互斥锁同一时间只能有一个任务抢到锁去执行,信号量同一时间可以有5个任务拿到锁去执行,如果说互斥锁是合租房屋的人去抢一个厕所,那么信号量就相当于一群路人争抢公共厕所,公共厕所有多个坑位,这意味着同一时间可以有多个人上公共厕所,但公共厕所容纳的人数是一定的,这便是信号量的大小 from threading import Thread,Semaph... 阅读全文
posted @ 2018-07-04 14:56 游走在边缘的人 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 线程queue queue的三种用法: 先进先出->队列 import queue q=queue.Queue(3) q.put('first') q.put('second') q.put('third') print(q.get()) print(q.get()) print(q.get()) ''' 结果(先进先出): first second third ''' 后进先出-... 阅读全文
posted @ 2018-07-04 14:56 游走在边缘的人 阅读(90) 评论(0) 推荐(0) 编辑