• python 数据库


    # gil锁
    # 全局解释器锁,Cpython解释器下有的
    # 导致了python的多线程不能利用多核(不能并行)

    # 内容回顾
    # 池 concurrent.futures
    # 进程池 p = ProcessPoolExecutor(n)
    # 线程池 p = ThreadPoolExecutor(n)
    # future = submit 提交任务
    # future.result()获取结果
    # map 循环提交任务
    # add_done_callback 回调函数
    # 协程
    # 协程:本质是一个线程
    # 能够在一个线程内的多个任务之间来回切换
    # 节省io操作的时间也只能是和网络操作相关的
    # 特点:数据安全,用户级别,开销小,不能利用多核,能够识别的io操作少
    # gevent 第三方模块 完成并发的socket server
    # 协程对象.spawn(func,参数)
    # 能识别的io操作也是有限的
    # 并且要想让gevent能够识别一些导入的模块中的io操作
    # from gevent import monkey;monkey.patch_all()
    # asyncio 内置模块
    # await 写好的asyncio中的阻塞方法
    # async 标识一个函数时协程函数,await语法必须用在async函数中
    # import asyncio
    # async def func():
    # print('sjkhaf')
    # await asyncio.sleep(1)
    # print('sjkhaf')
    # loop = asyncio.get_event_loop()
    # loop.run_until_complete(func())
    # loop.run_until_complete(asyncio.wait([func(),func(),func()]))


    # 思维导图 -- 并发
    # 进程 :特点 操作模块 基础的方法和特点 IPC
    # 线程 : ***** GIL
    # 协程 : ***** 在爬虫的时候学到的模块都是基于协程实现的,flask框架/sanic框架
    # gevent
    # asyncio
    # 其他概念 : 同步异步 阻塞非阻塞 并发并行 调度算法 操作系统的发展
    # 环境变量
    # python -->python.exe
    # 在任何目录下都能够找到python.exe文件
    # 才能在任意位置输入python命令启动python解释器

    # mysqld install 安装mysql服务 mysql服务就被注册到操作系统中
    # net start mysql 启动mysql服务
    # net stop mysql

    # 启动客户端连接server
    # mysql -uroot -p123 -h192.168.14.12

    # mysql>select user(); 查看当前登录的用户
    # mysql>set password = password('123'); 给当前用户设置密码
    #
    # 创建一个其他用户
    # create user 'guest'@'192.168.14.%' identified by '123';
    # 给一个用户授权
    # grant 权限类型 on ftp.* to 'guest'@'192.168.14.%';
    # grant all
    # grant select on day37.* to 'guest'@'192.168.14.%';
    # grant select,insert


    # 操作数据库
    # 查看所有数据库 show databases;
    # 创建一个数据库 create database 数据库名;
    # 切换到这个库下 use 数据库的名字
    # 查看这个库下有多少表 show tables;

    # 操作表
    # 创建一张表
    # create table student(name char(12),age int);
    # 查看表结构
    # desc student;

    # 操作数据
    # 插入数据 : insert into student values ('wusir',73);
    # 查询数据 : select * from student;
    # 修改数据 : update student set age=85 where name='alex';
    # 删除数据 : delete from student where name = 'alex';
  • 相关阅读:
    软件下载
    01_动态规划之01背包问题
    25_使用切片建立一个动态的二位数组.go
    为什么突然想起来写博客
    24_切片的使用
    23_随机数的生成和冒泡排序
    22_数组做函数参数
    21_一维数组和二位数组的使用
    20_指针类型的使用
    19_获取命令参数
  • 原文地址:https://www.cnblogs.com/shaohuagu/p/12290801.html
Copyright © 2020-2023  润新知