最近参加了一个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/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的操作,来完成对数据库中数据的操作

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

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

2、Python连接数据库

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

  1. 单连接方式
import redis

#单次连接

#获取连接对象
conn=redis.Redis(host='192.168.176.176',port='6379')

# 插入一条字符串数据
conn.set("sf","1234")

#查询
print(conn.get("sf"))
  1. 连接池方式
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和爬虫

更多推荐

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