内容回顾
-
文件操作补充
1.read方法读取文件内置之后光标停留在文件末尾 2.代码是可以控制光标的移动seek方法 3.读取文件内容最佳的方式是采用for循环一行行读取
-
函数
函数就是工具 目的是为了减少代码冗余 一次制造多次使用 def 函数名(参数1,参数2,...): '''函数注释''' 函数体代码 return 返回值 1.函数的返回值 2.函数的参数 形参与实参的概念 位置参数 关键字参数 默认参数 可变长参数
-
面向对象
对象 包含了数据和功能 类 多个对象相同数据和功能的结合体 class 类名(): 相同数据 相同功能 对象 = 类名() 对象如果想要有各自独有的数据 class 类名(): 相同数据 # 固定写法 给对象各自独有数据 def _init_(self,name,age) self.name = name self.age = age 相同功能 对象 = 类名(姓名,年龄)
-
模块
模块可以简单的理解为是写好的具有一定功能的(文件或者是文件夹) 导入模块 import 模块名 from 模块名 import 子模块名1,子模块名2 针对第三方模块需要先下载 Pip3 install 模块名 pip3 install 模块名 -i 源地址 下载模块可能会出现的报错 1.pip版本过低 直接拷贝提示信息更新即可 2.网络不稳定 关键字Timeout 3.机器环境问题 需要结合不同的情况配置相应环境 常见模块 time datatime os
今日内容概要
-
作业讲解
-
常用模块
random模块
hashlib模块
json模块
-
软件开发架构
-
数据库的由来
-
数据库的概念
-
数据库的分类
-
MySQL简介
-
MySQL下载与安装
-
简单的SQL语句
今日内容详细
作业讲解
1.注册登录封装函数版本
2.学员管理系统函数版本
def register():
print('注册功能')
def login():
print('登录功能')
def shop():
print('购物功能')
def withdraw():
print('提现功能')
def check():
print('查看余额')
d = {'1':register,'2':login,'3':shop,'4':withdraw,'5':check}
while True:
print("""
1.注册功能
2.登录功能
3.购物功能
4.提现功能
5.查看余额
""")
choice = input('请选择需要执行的功能编号>>>:').strip()
if choice.isdigit():
if choice in d:
# 获取对应的函数名
func_name = d.get(choice)
# 执行函数
func_name()
else:
print('请输入正确的编号')
else:
print('请输入纯数字')
常用模块
# 1.随机数模块
import random
print(random.random()) # 0-1之间的随机小数
print(random.randint(1,6)) # 1-6之间的整数 掷色子
l = [2,3,4,5,6,7,8,9,10,'J','Q','K','A']
random.shuffle(l)
print(l) # 洗牌
ll = ['特等奖','一等奖','二等奖','谢谢惠顾']
print(random.choice(ll)) # 抽奖
# 随机验证码 数字 英文字母(大小写)
print(chr(65)) # 按照ASCII码表 将数字转换成字符
"""
A-Z 65-90
a-z 97-122
"""
# 思路 五位数 每一位都有三种选择
def get_code():
code = ''
for i in range(n):
# 随机大写字母
random_upper = chr(random.randint(65,90))
# 随机小写字母
random_lowwer = chr(random.randint(97,122))
# 随机数组
random_int = chr(random.randint(0,9))
# 随机挑选一个
temp = random.choice([random_upper,random_lowwer,random_int])
# 拼接到code字符串中
code += temp
print(code)
get_code(10)
get_code(4)
get_code(6)
# 2.加密模块
加密
将一串明文(一眼看得懂)数据通过机密变成密文数据(一眼看不懂)
加密的目的
为了保证数据的安全
import hashlib
# 1.先生成加密工具
md5 = hashlib.md5() # 基于md5算法加密数据
# 2.将明文数据放入工具中进行加密
md5.update('hello world'.encode('utf8')) # 数据必须是bytes类型(二进制)
'''如果字符串不包含中文 只有英文和数字 那么可以采取简便方法'''
# 3.获取加密之后的密文数据
res = md5.hexdigest()
print(res)
# 加盐处理(加额外的干扰项)
import hashlib
# 1.先生成加密工具
md5 = hashlib.md5() # 基于md5算法加密数据
# 1.1加盐处理
md5.update('公司自己定义的盐'.encode('utf8'))
# 2.将明文数据放入工具中进行加密
md5.update('hello world'.encode('utf8')) # 数据必须是bytes类型(二进制)
'''如果字符串不包含中文 只有英文和数字 那么可以采取简便方法'''
# 3.获取加密之后的密文数据
res = md5.hexdigest()
print(res)
# 动态加盐
import hashlib
# 1.先生成加密工具
md5 = hashlib.md5() # 基于md5算法加密数据
# 1.1加盐处理
md5.update('动态变化的盐(时间 用户名等)'.encode('utf8'))
# 数据必须是bytes类型(二进制)
# 2.将明文数据放入工具中进行加密
md5.update('123'.encode('utf8')) # 数据必须是bytes类型(二进制)
'''如果字符串不包含中文 只有英文和数字 那么可以采取简便方法'''
# 3.获取加密之后的密文数据
res = md5.hexdigest()
print(res)
# 3.json序列化模块
import json
d = {'username':'jason','password':123}
with open(r'a.txt','w',encoding='utf8') as f:
json.dump(d,f)
with open(r'a.txt','r',encoding='utf8') as f:
res = json.load(f)
print(res,type(res))
# 序列化 将某个数据类型序列化成json格式的字符串
print(json.dumps(d))
"""
json格式字符串 引号都是双引号
"""
# 反序列化 将json格式字符串反序列化成某个数据类型
res1 = json.loads(res)
软件开发架构
1.c/s架构
c:client
客户端
s:server
服务端
"""
客户端就相当于去店里消费的客人
服务端就相当于是店铺给客人提供的服务
"""
2.b/s架构
b:broswer
浏览器
s:server
服务器
"""
浏览器充当了很多服务端的客户端
b/s架构本质还是c/s架构
"""
数据库的前戏
1.单机游戏
数据都是各自独立保存 无法共享
2.联网游戏
数据都是共享的 数据库服务端
数据库就是用来保存数据的地方
1.文件
2.数据库软件
数据库的本质
1.本质就是一款c/s架构的软件
2.提供了一套统一规范管理数据的规则
客户端
1.基于网络交互数据
2.SQL语句/NoSQL语句
操作数据库的语言
服务端
1.基于网络交互数据
2.SQL语句/NoSQL语句
操作数据库的语言
数据库的分类
数据库本身就是一款软件,所以数据库软件也是非常多的
1.关系型数据库
拥有固定的表结构,并且有相应的字段约束,表与表之间还可以建立关系
常见关系型数据库:MySQL、Oracle、PostgreSQL、sql server、sqlite、
db2、acess...
2.非关系型数据库
没有固定的表结构 并且数据都是以K:V键值对的形式存储
常见非关系型数据库:Redis、MongoDB、memcache
MySQL数据库
# 为什么学习MySQL
1.MySQL是开源免费的
2.使用频率非常的高(很多公司都是使用MySQL作为数据库)
3.其他的数据库软件基本都是参考MySQL开发的
学习完MySQL,可以轻松掌握其他数据库操作
版本问题
5.5 淘汰
5.6 普遍使用
5.7 正在过渡
8.0 太新
# 在IT领域很多时候并不一定会使用最新版本的软件
'''无论什么版本 SQL语句都是一摸一样的 并不会影响你的学习'''
下载
下载步骤:
1.官网
https://www.mysql.com/
2.Downloads
MySQL Community (GPL) Downloads
3.MySQL Community Server
4.Looking for previous GA versions
5.下载一个压缩包
5.6版本
安装
bin文件夹
里面存放的都是启动程序
readme文件
相当于软件说明书
"""
压缩包里面含有MySQL客户端和服务端 这样便于我们本地学习
"""
mysql.exe 客户端
mysqld.exe 服务端
################## 一定是先启动服务端 再启动客户端
# 1.复杂版本
1.cmd窗口内先切换到mysqld.exe所在的路径下 输入mysqld启动服务端
2.保持当前cmd窗口不要关闭,另外重新打开一个cmd窗口
# 2.配置环境变量
1.将启动程序所在的路径添加到环境变量中
# 3.将MySQL制作成系统服务
1.以管理员身份打开cmd窗口
2.制作系统服务
mysqld --install
3.第一次需要我们自己启动 之后都是开机自启动
命令
net start mysql
net stop mysql
4.直接客户端链接即可
mysql游客模式验证
作业
1.练习封装函数功能
2.整理今日内容
3.自己动手完成MySQL下载与安装并启动使用
1.复杂版本
1.cmd窗口内先切换到mysqld.exe所在的路径下 输入mysqld启动服务端
2.保持当前cmd窗口不要关闭,另外重新打开一个cmd窗口
2.配置环境变量
1.将启动程序所在的路径添加到环境变量中
3.将MySQL制作成系统服务
1.以管理员身份打开cmd窗口
2.制作系统服务
mysqld --install
3.第一次需要我们自己启动 之后都是开机自启动
命令
net start mysql
net stop mysql