最近参加了一个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和爬虫
|