Python1+X(中级)证书培训笔记(上) 您所在的位置:网站首页 有诗意的书名自创神 Python1+X(中级)证书培训笔记(上)

Python1+X(中级)证书培训笔记(上)

2023-08-08 04:17| 来源: 网络整理| 查看: 265

最近参加了一个Python1+X的证书培训,然后以下是整理的学习笔记,证书涵盖的知识点有三大块 分别是数据库操作、WEB开发、网络爬虫分析下面将详细分别讲解

阅读必看

本博客没有安装的讲解,更多是如何快速的上手使用,当然也提供了安装教程,特别提醒一句,大家最好在Linux系统上安装数据库,因为在真实开发中,不会有公司的数据库是部署上windows系统上的,如果有,那么恭喜你可以炒老板鱿鱼了

一、数据库操作

数据库的安装我就不记录了,因为安装太麻烦,而且没啥用,教程网上也很多,为了减少学习成本,我使用的docker虚拟的数据库想了解docker的朋友可以参考我的其他博文 docker-compose使用教程 docker即学即用教程 对学习者来说,docker真的是非常好的一个工具,下面继续说数据库,在如今数据库大致可分为关系型数据库和非关系型数据库,而在1+x中主要考Mysql数据库、Mongodb数据库 、Redis数据库,在实际应用方面这三个数据库各有其长、各司其职,下面分别介绍

1.1MySql数据库

在这里插入图片描述

我们小学三年级就知道,MySQL是一款开源关系型数据库管理系统,具备体积小、速度快、部署成本低等优点,备受中小型企业欢迎。我这里记录的只是便于应付考试,而不是深入的去学习MySql如果想深入去学习MySql可去看我的其他专栏

1、前期准备

使用的数据库版本是 Mysql5.7.4 Python中的pymysql库版本是1.0.2 可视化工具使用的是Navicat这个安装可参照以下教程: navicat安装教程 MySql安装教程 安装完毕之后,使用navicat连接数据库,创建名为mydb的库,并在库中创建名为user的数据表格式如下: ![在这里插入图片描述](https://img-blog.csdnimg.cn/edf8b20a2b1848b8a95d38392b622bdc.png

2、python连接mysql

需要注意在连接前,我们需要先导入pymsql库 在这里插入图片描述

import pymysql #获取连接 db=pymysql.connect(host="192.168.156.146",user="root",password="123456",db='mydb',charset='utf8') # 获取游标 通过游标来执行语句 cur=db.cursor() 3、新增数据 #1、编写sql语句(执行插入操作) SQL_str1='insert into user (name,password,age) values("韩信","123456",12)' #执行sql语句 res=cur.execute(SQL_str1) #使用连接对象 提交刚刚游标执行的操作 提交后就不能在回滚了 db.commit() 4、新增多条数据 # 插入多条语句 list=[(1,2,3),(1,2,3),(1,2,3),(1,2,3)] SQL_str5="insert into user (name,password,age) values(%s,%s,%s)" for i in list: res=cur.execute(SQL_str5,i) db.commit() #使用完了之后要关闭连接对象和游标 cur.close() db.close() 5、修改数据 # 2、执行修改操作 SQL_str2="update user set name='李四',age=19 where name='张三'" res=cur.execute(SQL_str2) # 会返回影响记录条数 db.commit() 6、删除数据 # 3、执行删除操作 SQL_str3='delete from user where name like "%韩%"' res=cur.execute(SQL_str3) db.commit() 7、查询数据 # 4、执行查询操作 SQL_str4="select * from user" res=cur.execute(SQL_str4) # 获取查询结果 查询操作不需要提交 data=cur.fetchall() #打印查询结果 print(data) 1.2Python操作MongoDB

在这里插入图片描述

NoSQL概述

NoSQL,全称是”Not Only Sql”,指的是非关系型的数据库。这类数据库主要有这些特点:非关系型的、分布式的、开源的、水平可扩展的。原始的目的是为了大规模 web 应用,这场全新的数据库革命运动早期就有人提出,发展至 2009 年趋势越发高涨。NoSQL 的拥护者们提倡运用非关系型的数据存储,通常的应用如:模式自由、支持简易复制、简单的 API、最终的一致性(非 ACID)、大容量数据等

MongoDB概述

MongoDB 是一个高性能,开源,无模式的文档型数据库,是当前noSql数据库产品中最热门的一种。它在许多场景下用于替代传统的关系型数据库或键值对存储方式,MongoDB是用C++开发

数据库的安装我就不记录了,因为安装太费步骤,教程网上也很多,为了减少学习成本,我使用的docker虚拟的数据库想了解docker的朋友可以参考我的其他博文

这篇博客只是简单的概述Python连接Mongodb数据库并进行简单的CURD操作,如果想深入学习Mongodb数据库可以看我下面的博文 Mongodb最全学习笔记 Mongodb安装教程

1、Python连接MongoDB数据库

注:在连接前,需要先导入PyMongoDB数据库 在这里插入图片描述 下面开始写代码连接

import pymongo # 获取连接 client=pymongo.MongoClient("192.168.176.161",27017) #指定要操作的数据库(如果指定数据库不存在,会新建一个) db=client["book"] #认证(一般非关系型数据库不会设置认证 如果你的数据库没有设置密码, #那么就省略这一步,我是因为设置了密码所以才需要认证的) 一般对于非关系型数据库,我们不会设置密码 db.authenticate(name="admin",password="123456",source='admin') # 指定要操作的表 cli=db["test"] # 如果指定表不存在,那么会新增一个 2、新增数据 import pymongo # 获取连接 cli=pymongo.MongoClient("192.168.176.176",27017) # 指定要操作的库 mg_db=cli["mydb"] #认证 mg_db.authenticate(name="admin",password="123456",source='admin') # 指定要操作的集合 (对应mysql中的表) mg_col=mg_db['user'] # 添加单条数据 单条数据使用 insert_one() data={"name":"张三","age":18,"password":"123456"} result=mg_col.insert_one(data) #添加多条数据(列表嵌套字典) 多条数据使用 insert_many() dist=[{"name":"张三","age":18,"password":"123456"},{"name":"张三","age":18,"password":"123456"},{"name":"张三","age":18,"password":"123456"}] result=mg_col.insert_many(dist) 3、修改数据 import pymongo #获取连接 cli=pymongo.MongoClient("192.168.176.167",27017) # 指定操作的数据库 mydb=cli["mydb"] #认证 mydb.authenticate(name="admin",password="123456",source='admin') #指定操作文档 doc=mydb['user'] # 构造修改条件 old_query={"name":"韩信"} # 构造修改的目标数据 new_update={"$set":{"age":"41"}} #修改数据 update_one() 或者 update_many() doc.update_one(old_query,new_update) #查看成果 for data in doc.find(): print(data) 4、删除数据 import pymongo #获取连接 cli=pymongo.MongoClient("192.168.176.161",27017) # 指定操作的数据库 mydb=cli["mydb"] #认证 mydb.authenticate(name="admin",password="123456",source='admin') #指定操作文档 doc=mydb['user'] #构造删除条件 where={'name':'张三'} #删除数据使用remove() doc.remove(where) 5、查询数据 import pymongo #获取连接 cli=pymongo.MongoClient("192.168.176.161",27017) # 指定操作的数据库 mydb=cli["mydb"] #认证 mydb.authenticate(name="admin",password="123456",source='admin') #指定操作文档 doc=mydb['user'] # 查询一条记录 doc.find_one() 返回的是一个字典 result=doc.find_one() print(result["name"]) # 只显示name #查询所有数据用doc.find() 返回的是一个元素为list list里面是字典元素 result=doc.find() for i in result: print(i) 6、带条件查询 # 带条件查询 #首先将条件做成一个字典 然后将字典做成一个参数 where={"name":"张三1"} result=doc.find_one(where) print(result) # 带特殊条件查询 例如age大于18 # 构造条件 where={"age":{'$gt':18}} #执行查询操作 result=doc.find(where) for i in result: print(i) 1.3 Python操作Redis数据库

在这里插入图片描述

同上述,安装教程我就不写了,提供安装笔记, Redis安装笔记

Redis数据库真的非常的牛逼,作为一个后端开发者,redis是必须掌握的,本文只是简单的介绍一些常用的操作,那么想深入学习redis的,可以看我其他的博文,当然后续也会持续完善的。 Redis持久化学习笔记

1、Redis数据库概述

Redis数据与Mongodb数据库一样同属非关系型数据库,当然他们的应用场景不一样,Mongodb数据库主要是应用于文档型数据库,redis是一个Key-Value等多种数据结构的存储系统,可用于缓存,事件订阅,发布,高速队列等场景

该数据库使用ANSI C语言编写,支持网络,提供字符串,哈希,列表,队列,集合结构直接存取,基于内存,可持久化。

Redis非常快,每秒可执行大约110000次的设置(SET)操作,每秒大约可执行81000次的读取/获取(GET)操作。 我们这里主要学习他的五种结构的操作 字符串,哈希、列表、集合、

注: 1、在python中需要提前下载redis库 2、redis数据库虽然可以设置密码,但是我们为了更快是没有设置密码验证的 在这里插入图片描述

1-2redis中数据类型讲解

在redis中无论什么数据类型,在数据库中都是以key-value形式保存,通过进行对Redis-key的操作,来完成对数据库中数据的操作

String(字符串) 字符串就不用说了吧,Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)Redis的Set是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。

当然redis还有三种不常用的特殊类型,这里属于基础教程就不多说了,后续有空,会写个详细的笔记 介绍 ;

2、Python连接数据库

python连接redis分为两种方式,分别是单次连接和连接池连接,单连接更加方便而连接池更快,考试考连接池的几率更大,所以后面的操作都是以连接池为主

单连接方式 import redis #单次连接 #获取连接对象 conn=redis.Redis(host='192.168.176.176',port='6379') # 插入一条字符串数据 conn.set("sf","1234") #查询 print(conn.get("sf")) 连接池方式 import redis # 连接池连接 #1、创建连接池 pool=redis.ConnectionPool(host="192.168.176.176",port='6379',db=1) #取出连接 conn=redis.Redis(connection_pool=pool) # 简单使用 conn.set("pool_str_test",1234) print(conn.get("pool_str_test")) 3、字符串的操作 import redis pool=redis.ConnectionPool(host="192.168.176.164",port='6379',db=1) #获取连接 conn=redis.Redis(connection_pool=pool) #字符串操作 conn.set("pool_str_test","redis_pool_python") print(conn.get("pool_str_test")) #在已经存在的字符串后增加 append() conn.append("pool_str_test","this is a test") print(conn.get("pool_str_test")) 4、列表的操作 import redis pool=redis.ConnectionPool(host="192.168.174.156",port='6379',db=1) #获取连接 conn=redis.Redis(connection_pool=pool) # list的应用 # 插入数据 conn.lpush("list_1","zhangsan") conn.lpush("list_1","lisi") conn.lpush("list_1","lis23") # 获取list全部数据 print(conn.lrange("list_1",0,-1)) #获取某一个数据 print(conn.lrange("list_1",2,2)) #计算列表的长度 print(conn.llen("list_1")) #列表弹出操作 lpop 左边弹出首元素, lrange右边弹出首元素 print(conn.lpop("list_1")) #第三个和第四个参数是为了弹出全部数据,0到-1的范围嘛 print(conn.lrange("list_1",0,-1)) 5、hash的操作(hash键值) import redis pool=redis.ConnectionPool(host="192.168.174.165",port='6379',db=1) #获取连接 conn=redis.Redis(connection_pool=pool) #插入hash数据 使用hset() conn.hset("hash_set","name",1) #同时插入多条键值数据 conn.hset("has_set",{"age":124,"name":1442}) #获取hash插入的值 print(conn.hget("has_set","name")) #获取所有键值对 print(conn.hgetall("has_set")) 6、set的操作(集合类型 不可重复) import redis pool=redis.ConnectionPool(host="192.168.177.171",port='6379',db=1) #获取连接 conn=redis.Redis(connection_pool=pool) conn.sadd("set_t1","zhangsan") conn.sadd("set_t1","张三") #获取集合中数据个数 print(conn.scard("set_t1")) #获取集合内容 print(conn.smembers("set_t1"))

未完待续 敬请期待中、下部 后面分别是WEB和爬虫



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有