Python基础阶段课堂笔记

1,什么是闭包,闭包的经典应用

闭包:内部函数对外部函数作用域里变量的引用
应用:装饰器

2,写一个多线程

#函数方式
导入threading包
对象名= threading.Thread(target = 函数名) 创建线程对象
对象名.start() 创建线程

import threading
import time

def sing(num):
    for i in range(num):
        print("sing%d" % i)
        time.sleep(0.5)

def dance(num):
    for i in range(num):
        print("dancing%d" % i)
        time.sleep(0.5)

def main():
    """创建启动线程"""
    t_sing = threading.Thread(target=sing, args=(5,))
    t_dance = threading.Thread(target=dance, args=(6, ))
    t_sing.start()
    t_dance.start()

if __name__ == '__main__':
    main()
   
#继承方式
导入threading包
创建一个类继承Thread类,重写run方法
创建类对象,调用start()方法创建线程

import threading
import time

class MyThread(threading.Thread):
    def run(self):
        for i in range(3):
            time.sleep(1)
            msg = "I'm "+self.name+' @ '+str(i)
            print(msg)

def test():
    for i in range(5):
        t = MyThread()
        t.start()

if __name__ == '__main__':
    test()

3,多线程多进程的异同点

1,相同点:都能实现多任务,

2,不同点:
#多线程共享全局变量,多进程不共享
#进程之间是相互独立的,一个进程崩溃也不影响主程序的稳定性;线程与线程之间不相互独立,一个线程的崩溃可能会影响整个程序的稳定性
#进程是一个拷贝的流程,而线程只是把一条河流截成很 多条小溪。

4,对于表的创建、修改以及删除

1,创建:create table 表名(字段名 数据类型 约束,字段名 数据类型 约束,字段名 数据类型 约束)2,修改:
        #(1)对已经存在的表进行重命名:
        RENAME TABLE 旧表名 
        TO 新表名
        #(2)往已经存在的表中添加字段信息:
        ALTER TABLE 表名 
        ADD 字段名 字段类型;
        #(3)删除某张表中的字段:
        ALTER TABLE 表名
        DROP 被删除的字段名
        #(4)对表中的字段进行重命名:
        ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新字段名的数据类型;
        #(5)对表中字段的数据类型(主要是修改长度):
        ALTER TABLE 表名 CHANGE 旧字段名 旧字段名 旧字段名的数据类型;

3,删除:drop table 表名

5,事物的创建

格式:	
start transaction;#开始
sql语句1
sql语句2
...
commit;#提交
rollback:#回滚

6,装饰器的作用

给其他函数添加新的功能

7,写出所知的约束

1,主键约束:PRIMARY KEY
2,默认值约束:DEFAULT
3,唯一约束:UNIQUE
4,外键约束:FOREIGN KEY
5,非空约束:NOT NULL

8,删除外键

alter table 表名 drop constraint 外键约束名
-添加外键
语法:alter table 外键表名 add constraint 约束名称 foreign key (外键字段) references 主键表名(约束列名)。

如果表A中的Ids是主键,要约束表B中得Aid列,那么语句应该是:alter table B add constraint A_B_Ids foreign key(Aid) references A(Ids)。

alter table 表名 drop constraint 主键约束名
-增加主键
语法:alter 表名 add constraint 主键约束名 primary key(列名)

9,多张表的连接方式

内连接:inner join
外连接:left join,right join,full join
交叉连接:cross join,也称笛卡尔积

10,完整的select语句,写出执行顺序

select *
from1 (连接方式)
join 表2
on 连接条件
where 
group by 分组的字段
having 
order by 排序的字段 asc|desc
limit start,pagesize
1from子句组装来自不同数据源的数据; 

2、where子句基于指定的条件对记录行进行筛选; 

3、group by子句将数据划分为多个分组; 

4、使用聚集函数进行计算; 

5、使用having子句筛选分组; 

6、计算所有的表达式; 

7、select 的字段;

8、使用order by对结果集进行排序。

11,交叉连接

cross join
也称笛卡尔积

12,事物的格式,ACID

格式:
start transaction;#开始
sql语句1
sql语句2
...
commit;#提交
rollback:#回滚

A:原子性:一个事物是不可再分的工作单元,要么全部成功要么全部失败。

C:一致性:事物必须是数据库的一个一致的状态到另一个一致的状态。

I:隔离性:一个事物的执行不能被其他的事物干扰。

D:持久性:一个事物一旦被提交,他对数据库的改变是永久性的

13,视图的格式以及应用场景,使用视图的注意点

#格式:
	create view 视图名
    as
    标准的sql查询语句
#应用场景:
	金融行业,保险行业,财务行业。
#注意点:1)视图可以使用多个表
	(2)一个视图可以嵌套另一个视图
	(3)对视图的数据进行添加、修改和删除操作直接影响所引用的表中的数据
	(4)当视图数据来自多个表时,不允许添加和删除数据
			

14,写出协程实现的三种方式

利用yield实现协程
import time

def work1():
    # 循环打印数字1 
    while True:

        print("-----1-----")
        # yield可以暂时挂起该函数,跳转到调用该函数的下方
        yield
        # 延迟一秒以便观察
        time.sleep(1)

def work2():

    while True:

        print("-----2-----")
        yield
        time.sleep(1)


th1 = work1()
th2 = work2()

while True:
    # 唤醒被挂起的函数
    next(th1)
    next(th2)
利用greenlet实现协程
import time
import greenlet


def work1():
    # 循环打印字符串
    while True:

        print("----1----")
        # 启动th2
        th2.switch()
        time.sleep(1)

def work2():
    # 循环打印字符串
    while True:

        print("----2----")
        # 启动th1
        th1.switch()
        time.sleep(1)

# 创建携程
th1 = greenlet.greenlet(work1)
th2 = greenlet.greenlet(work2)
# 启动携程
th1.switch()
利用gevent实现协程
import gevent

import time


def work1():
    # 循环打印
    while True:

        print("----1----")
        # 破解sleep 使sleep不再阻塞
        gevent.sleep(1)

def work2():

    while True:

        print("----2----")

        gevent.sleep(1)

# 创建并开始执行携程
th1 = gevent.spawn(work1)
th2 = gevent.spawn(work2)
# 阻塞等待携程结束
gevent.joinall([th1,th2])

15,存储过程的实现、查看与删除

格式:
	delimiter $
	create procedure 存储过程名(参数列表)
    begin
    	存储过程体(合法有效的sql语句)
    
    end$
    call 存储过程名()
查看:show create procedure 存储过程名;
删除:drop procedure 存储过程名;

16,数据库底层

1,连接层:提供与客户端的连接服务
2,服务层:提供各种用户的窗口;提供sql优化器
3,引擎层:提供存储数据的方式
4,存储层:存储数据

17,怎么在类的外面强行访问私有属性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值