python操作数据库
1.python中的两个对象
1.连接对象  connection
作用:创建一个python程序到数据库的 连接通道  和jdbc连接是一个道理
方法: 
cursor  创建游标
commit   提交事务
rollback  事务回滚

参数:
1.mysql服务器地址    IP
2.端口号 port 3306
用户名  user root
密码   password root
数据库 database  test
字符集 charset

2.游标对象  cursor
是操作数据库的一个指针,类似于 在高速路上的大货车,从起点 建立连接到终点 关闭连接
常用方法:
execute(sql)     执行sql命令的一个方法
fetchone   取出结果集的下一行
fetchmany(size)   取出结果集的下几行
fechall    获取结果集的所有行
rowcount   最近一次执行execute   返回结果集的行数或者影响的行数
close   关闭

操作 sqlite  流程
sqlite操作流程:
1.导入模块sqlite            import sqlite3 
2.创建连接对象connection        conn = sqlite3.connect('mrsoft.db')
3.创建游标对象cursor        cursor = conn.cursor()
4.执行sql语句            cursor.execute('create table user(id int(10), primary key name varchar(20))')
5.关闭游标对象            cursor.close()
6.关闭连接对象                                          conn.close()

5.操作mysql数据库
    a.安装mysql数据库
    b.配置环境变量
    c.开启服务连接测试
    d.使用Navicat连接mysql
    e.使用pip命令安装pymysql模块

连接数据库的流程:
        # 导入模块pymysql
        import pymysql
        # 打开数据库,参数1:主机名域IP 参数2:用户名 参数3:密码 参数4:数据库名称
        db = pymysql.connect('localhost', 'root', 'root', 'stuypython')
        # 使用cursor() 方法创建一个游标对象 cursor
        cursor = db.cursor()
        # 使用execute() 方法执行sql查询
        cursor.execute('SELECT VARSION()')                # 如果表存在删除表    'DROP TABLE IF EXISTS 表名'    
        # 使用fetchone() 方法取单条数据
        data = cursor.fetchone()
        print('Database version : %s' % data)
        # 关闭游标
        cursor.close()
        # 关闭数据库连接
        db.close()
    
    
    创建表
        import pymysql
        db = pymysql.connect('localhost', 'root', 'root', 'mrsoft')
        cursor = db.cursor()
        # 如果表存在删除表
        cursor.execute('DROP TABLE IF EXISTS books')
        print('books已删除')
        sql = '''
                create table books(
                id int(8) primary key,
                name varchar(20) not null,
                category varchar(20) not null,
                price decimal(10, 2),
                publish_time date
                )
             '''
        cursor.execute(sql)
        cursor.close()
        db.close()
        
    插入数据
        import pymysql
        db = pymysql.connect('localhost', 'root', 'root', 'mrsoft')
        cursor = db.cursor()
        data = [
                ('零基础学Python', 'Python', '79.80', '2018-5-20'),
                ('python从入门到精髓', 'Python', '69.80', '2018-6-18'),
                ('零基础学PHP', 'PHP', '65.80', '2017-5-21'),
                ('PHP项目开发实战入门', 'PHP', '79.80', '2016-5-1'),
                ('零基础学Java', 'Java', '69.80', '2017-5-21'),
                ]
        try:
            # 执行sql语句插入多条数据
            cursor.executemany('''insert into books(name, category, price, publish_time)
                                values (%s, %s, %s, %s)''', data)
            print('数据插入成功,请查看')
            # 提交数据
            db.commit()
        except:
            # 发生错误时回来
            db.rollback()
        cursor.close()
        db.close()
    查询数据
        import pymysql
        db = pymysql.connect('localhost', 'root', 'root', 'shop')
        cursor = db.cursor()
        sql = '''SELECT * FROM books'''
        try:
            cursor.execute(sql)
            results = cursor.fetchall()
            for i in results:
                user_id = i[0]
                name = i[1]
                category = i[2]
                price = i[3]
                publish_time = i[4]
                print('user_id=%s\tname=%s\tcategory=%s\tprice=%s\tpublish_time=%s'
                      '' % (user_id, name, category, price, publish_time))
        except Exception:
            print('查询出错')
        cursor.close()
        db.close()
    删除数据
        import pymysql
        db = pymysql.connect('localhost', 'root', 'root', 'shop')
        cursor = db.cursor()
        sql = "DELETE FROM books WHERE  id > '%d'" % 4
        try:
          cursor.execute(sql)
          db.commit()
          print("delete OK")
        except:
          db.rollback()
        cursor.close()
        db.close()
    修改数据
        import pymysql
        db = pymysql.connect("localhost", "root", "root", "shop" )
        cursor = db.cursor()
        sql = "UPDATE books SET name = 'PHP项目开发实战入门' WHERE id = '%c'" % '1'
        try:
          cursor.execute(sql)
          db.commit()
          print("update OK")
        except:
          db.rollback()
        cursor.close()
        db.close()

爬虫
1.什么是网络爬虫
    概括:实现按照一定的算法,自动浏览获取网页中的信息,Java php C语言 C++也可以编写爬虫语言
    用python的优势:1.快速开发
                    2.跨平台
                    3.解释性
                    4.多种网络爬虫框架
2.爬虫的3大模块
    a.urllib
        ''' 使用爬虫获取到百度首页的页面信息代码如下 '''
        # 导入模块
        import urllib.request
        # 调用urlopen函数, 获取百度的所有信息
        respone = urllib.request.urlopen('http://www.baidu.com/')
        # 读取信息并转码为utf-8格式
        # 第一种
        print(respone.read().decode('utf-8'))
        # 第二种 print(str(respone.read(), encoding='utf-8'))
        
    b.urllib3
        # 导入模块
        import urllib3
        # 获取http对象
        http = urllib3.PoolManager()
        # 发送网络请求 get 或 post 输出的格式不一样
        # response = http.request('get', 'http://www.baidu.com/', fields={'word': 'hello'})    
        response = http.request('POST', 'http://www.baidu.com/', fields={'word': 'hello'})
        # 打印接受到的信息
        print(response.data.decode('utf-8'))
    c.requests(最常用)
        # 导入 requests
        import requests
        # 请求参数
        data = {'zhangsan': 'hello'}
        # 发送网络请求    可以用 get 或 post
        # response = requests.get('http://www.baidu.com')
        response = requests.post('http://www.baidu.com', data=data)
        # 打印相关信息
        print('状态码:', response.status_code)
        print('请求地址:', response.url)
        print('头部信息:', response.headers)
        print('cookies信息:', response.cookies)
        print('文本信息:', response.text)
        print('字节码源:', response.content)
3.请求 headers 的处理    作用:简单的避免403 (服务器反扒)
    import requests
    # 储存请求头信息
    ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:74.0) Gecko/20100101 Firefox/74.0'
    headers = {'User-Agent': ua}
    # 发送网络的请求
    respense = requests.get('http://www.whatismyip.com', headers=headers)
    # 打印网站的信息
    print(respense.content.decode('utf-8'))
4.网络超时
    1.超时的原因
        a.网络断开
        b.网络不稳定
        c.网络堵塞
        d.网络过慢
    案例:
        import requests
        from requests.exceptions import ReadTimeout, HTTPError, RequestException

# 循环访问50次百度
        for i in range(50):
            try:
                # 网络请求
                rsponse = requests.get('http://www.baidu.com/', timeout=0.05)
                print('状态码: ', rsponse.status_code)
            except ReadTimeout:
                print('Timeout')
            except HTTPError:
                print('HTTPError')
            except RequestException:
                print('RequestException')
5.代理        (代理推荐网站:www.xicidaili.com)
    import requests
    proxy = {'HTTP': '183.167.217.152:63000',
             'HTTPS': '222.95.144.185:3000'}
    # 通过代理ip进行网络请求
    response = requests.get('http://www.baidu.com', proxies=proxy)
    # response = requests.get('https://www.baidu.com', proxies=proxy)
    # 打印爬到的信息
    print(response.content.decode('utf-8'))
6.HTML解析值Beautiful Soup
    a.常用HTML解析模块
        LXML模块
        Requests-HTML模块
        HtmlParser模块
    b.安装命令
        Linux:    apt-get install Python-bs4
        Windows:    easy_install beautifulsoup4    或    pip install beautifulsoup4
    安装 bs4 和 lxml
        from bs4 import BeautifulSoup
        import requests
        ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:74.0) Gecko/20100101 Firefox/74.0'
        headers = {'User-Agent': ua}
        response = requests.get('https://www.baidu.com/', headers=headers)
        text = response.content.decode('utf-8')
        # 解析HTML信息
        soup = BeautifulSoup(text, features='lxml')
        # 打印信息
        print(soup.prettify())          # prettify() 是格式化html格式
        # 打印解析后的标题
        print(soup.title)
网络编程
1.什么是网络编程
socket(套接字):他是一组接口,位于应用层和运输层之间的抽象层
       应用程序通常通过‘套接字’向网络发送请求或者应答网络请求,使主机间啊或者一台计算机上的进程间可以通讯 
  起源于BSC Unix 一开始被用在同一台主机上多个应用程序之间通讯,这称为进程间通讯或IPC
      套接字有两种(或称两个种族),分别基于文件型和网络型的
      套接家族的名字:AF_UNIX  基于文件 unix一切皆文件,基于文件的套接字节用的就是底层的文件系统来读取数据,两个套接字进程进行在同一台机器,可以通过访问同一文件系统间接完成通信
                                 AF_INET基于网络类型
语法:
      socket.socket([family[,type[,proto]]])
                  family:套接字家族可以使AF-UNIX或者AF_INET
                  type:套接字类型可以根据是面向连接的还是非连接分为SOCK_STREAM或SOCK_DGRAM
                  protocol:一般不填默认为0

2.ip和端口号  
IP地址:互联网协议地址,是一个32位的二进制数,通常被分割为4个人‘8位二进制数’;
IP地址通常用‘点分十进制’表示(a,b,c,d)的形式,其中a,b,c,d都是0~255之间的十进制整数
  (记录每台电脑的标识)
端口:设备与外界通讯交流的出口   port音译
   (记录应用程序的标识)
互联网的核心是由一堆协议组成,协议就是标准

3.os七层模型
   参考网址:https://blog.csdn.net/qq_41923622/article/details/85805003
osi模型:
  应用程序  
  表示层     
  会话层     
  传输层     
  网络层     
  数据链路层
  物理层

TCP和UDP协议
TCP 可靠的、面向连接的协议
          传输效率低全双工通信、面向字节流       应用:Web浏览器、电子邮件、文件传输程序
UDP 不可靠、无连接的服务
          传输效率高(发送前时延小),一对一,一对多,多对一,多对多、面向报文,尽最大努力服务,无拥塞控制          应用:域名系统DNS,视频流,IP语音(VoIP)
 
服务器套接字
  s.bind()  绑定地址(host,port)到套接字,在AF_INET,以元组的形式表示地址
  s.listen()
  s.accept()
客户端套接字
  s.connect()连接服务器
  s.connect_ex()
  s.recv()
  s.send()
Socket对象(内建)方法
  s.sendall( )       完整发送TCP数据。将string中的数据发送到连接的套接字,但在返回前会尝试发送所有数据,成功返回None失败抛出异常
  s.makefile( )    创建一个与套接字相关连的文件
   
语法:
客户端
      创建socket对象
           socket.socket()
      绑定ip和端口号
           socket.bind((host,port))
      设置最大连接数
           socket.listen(5)
      循环中等待客户端连接
           while  True:
                 conn.addr = socket.accpet()
客户端
       创建socket对象
       socket.socket()
       连接服务器
       sockrt.connect((host,port))
公用方法
       send(str)发送数据
       recv(1024)接收数据
       发送和接收时需要转码和解码(encode()和decode())
       conn.close()

启动:
   先启动服务器端
   重复启动服务器端(会提示端口号被占用错误)

多任务:同一时间,多个任务同时执行

单核cpu  时间片轮询机制   一个2.8G hz的cpu 每秒大概要执行28亿次

python默认是单任务

主线程;程序被启动时,就有一个进程被创建,该线程被成为程序的主线程,在主程序运行时也可以手动创建子线程。

并行和并发
并发:任务的数量大于cpu核心数的时候就叫并发处理
并行:任务数量小于或等于cpu核心数就叫做并行

同步:多任务中,多个任务执行-有先后顺序,一个执行完毕后,另一个再执行
异步:多个任务中,多个任务执行没有先后循序,多个任务同时执行
线程锁机制:当线程获取资源后立刻进行锁定,资源使用完毕后再解锁,有效的保证同一时间只有一个线程在使用资源

当多个线程几乎同时修改某一个共享数据的时候,需要进行同步控制。
互斥锁为资源引入一个状态:锁定/非锁定
 互斥锁保证了每次只有一个线程进行写入操作,从而保证了多线程情况下数据的正确性。
 threading模块下的Lock类
 3步: a.创建锁 
              mutex = threading.Lock()
           b. 锁定
              mutex.acquire()
           c.释放
              mutex.release()  
    互斥锁只有一把锁才能互斥

Python笔记06相关推荐

  1. python笔记06: 函数

    函数 代码的一种组织形式 一个函数一般完成一项特定的功能 函数使用 函数需要先定义 使用函数,俗称调用 # 定义一个函数 # 只是定义的话不会执行 # 1. def关键字,后跟一个空格 # 2. 函数 ...

  2. python笔记-1(import导入、time/datetime/random/os/sys模块)

    python笔记-6(import导入.time/datetime/random/os/sys模块) 一.了解模块导入的基本知识 此部分此处不展开细说import导入,仅写几个点目前的认知即可.其它内 ...

  3. opencv学习笔记06

    原创:opencv学习笔记06 OpenCV-Python教程:50.理解k-近邻 https://www.jianshu.com/p/404e329e4e80 OpenCV里的kNN 1 2 3 4 ...

  4. Python笔记相关

    Python 2021.9.9 Turtle官方文档 货币兑换 money=input("请输入货币符号($/¥)和金额:") while 1+1==2:if money[0] i ...

  5. tkinter 笔记: radiobutton 选择按钮(莫烦python笔记)

    1 主体框架还是那个主体框架 window = tk.Tk() window.title('my window') window.geometry('500x500') 2 设置tkinter的文字变 ...

  6. tkinter 笔记:列表部件 listbox (莫烦python 笔记)

    1  主体框架 主体框架部分还是 import tkinter as tkwindow = tk.Tk() #创建窗口window.title('my window') #窗口标题window.geo ...

  7. python笔记: 生成器

    元素按照某种算法推算出来,我们在循环的过程中不断推算出后续的元素 不必创建完整的list,从而节省了大量的空间 这种一边循环一遍计算的机制,称之为生成器generator 1 列表生成器 把列表生成式 ...

  8. Spring-学习笔记06【spring_day02资料_dbutils】

    Java后端 学习路线 笔记汇总表[黑马程序员] Spring-学习笔记01[Spring框架简介][day01] Spring-学习笔记02[程序间耦合] Spring-学习笔记03[Spring的 ...

  9. Spring-学习笔记06【Spring的新注解】

    Java后端 学习路线 笔记汇总表[黑马程序员] Spring-学习笔记01[Spring框架简介][day01] Spring-学习笔记02[程序间耦合] Spring-学习笔记03[Spring的 ...

最新文章

  1. Linux应用集成MySQL数据库访问技巧
  2. DirectShow 在VS2005中环境配置
  3. [极客大挑战 2019]EasySQL
  4. 创建oracle方法,简单的Oracle存储过程的创建方法
  5. Spring学习总结(3)——Spring配置文件详解
  6. jQuery EasyUI/TopJUI实现数据表格的增删改查功能(不写js,纯HTML实现!!!)
  7. JVisualVM的使用教程
  8. [短线是银]条件选股公式集源码!
  9. 随机效应估算与固定效应估算_混合OLS模型、固定效应模型、随机效应模型的区别是什么...
  10. python共享单车数据分析_共享单车数据可视化分析(Python/Seaborn)
  11. 有关计算机知识的外文翻译,计算机专业外文翻译+原文-DBMS和MIS
  12. WebRTC学习实现视频
  13. python自动化办公 51cto_用Python开发钉钉群机器人,自动办公神器
  14. TimesTen 应用层数据库缓存学习:12. 管理缓存环境
  15. Android Studio 环信IM聊天设置用户头像
  16. linux 查看当前连接ip,netstat查看系统连接数及当前连接IP
  17. 连接跟踪TCP协议状态转换
  18. 【FPGA】时序逻辑电路——基于计数器实现一个以1秒频率闪烁的LED灯
  19. 【原创】婚前男女必看的一本好书 —— 《男人这东西》 BY:渡边淳一
  20. 致香港科技大学学生家长的公开信

热门文章

  1. sharding-JDBC源码分析(二)SQL解析
  2. 文献精讲-弱小目标检测-ADMD方法
  3. 永中“闹鬼”,天理不容
  4. Docker container 杀不掉 docker 死掉怎么办?
  5. html用css写彩虹,如何使用纯CSS实现彩虹条纹文字的效果(附代码)
  6. 低代码aPaaS复杂应用场景:HR必备的MBTI、九型人格、PDP等性格测试工具,尽在得帆云平台
  7. 文章姚笛甜蜜同游香港 两人婚外情曝光
  8. ifttt_选择IFTTT平台的7个技巧
  9. apicloud 地图、定位等汇总及心得
  10. mysql按周统计某维度指标(week与weekday)