Python数据库基础 笔记9

一、笔记说明

  1. 本博客专栏《Python数据库基础》的所有笔记均为.py格式文件,复制后均可无误执行(注意修改文件路径,每个人的工作区不一样)。但鉴于数据库的特殊性,很多代码需要新建相同的本地数据库,这很耽误时间且对学习意义不大,建议对数据库类代码以借鉴为辅,自我实践为主
  2. 对数据库代码,请在Ubuntu18.04系统命令行下进行实践,可确保代码无误。《Python数据库基础》中SQL语言的编写标准是按照MySQL进行的,另外,本专栏还包含对Redis和mangoDB的基础操作介绍。
  3. 代码运行环境Python3.7.9,建议使用Pycharm2020.1作为编辑器,使用Anaconda3作为包管理器。

二、代码部分

# 09.py

print("Jsion模块:")
print("1.基本语法规则:"
      "1.1数据由键值对组成"
      "1.2键值对由逗号分隔"
      "1.3大括号里保存对象"
      "1.4中括号里保存数组")

print("2.注意事项:"
      "2.1字符串必须用双引号(即:””)来包括"
      "2.2值可以是字符串、数字、true、false、null、列表,或字典。")

print("3.数据类型转换对应关系:"
      "    Python           JavaScript"
      "3.1字典              对象"
      "3.2列表或元组        数组"
      "3.3字符串            字符串"
      "3.4int或float        数字"
      "3.5True或False       true或false"
      "3.6None              null")

print("4.JSion模块API文档:"
      "4.1json.dumps(obj)          将python数据转化为json"
      "4.2json.loads(s)            将json数据转换为python的数据"
      "4.3json.dump(obj, fp)       转换为json并保存到文件中"
      "4.4json.load(fp)            从文件中读取json,并转化为python数据")

import json
my_direct={
    'a':1,
    'b':[1,2,3],
    'c':True,
    'd':None,
    'e':(1,2.3),
    'f':'啥课,哪的健康?'
}
#python数据转换为json数据
result=json.dumps(my_direct)
print(type(result))
print(result)
#json数据转换为python数据
result_1=json.loads(result)
print(type(result_1))
print(result_1)
#注:此处json数组转换默认转为列表,不会转换为元组
#处理中文,不使其转换为Unicode码
result=json.dumps(my_direct,ensure_ascii=False)
print(result)
#对文件的使用
with open("json_1.txt","w+") as f:
#读取文件数据,方法一
    json.dump(my_direct,fp=f,ensure_ascii=False)
    f.seek(0)
    print(f.read())
#读取文件数据,方法二
with open("json_1.txt","r") as f:
    result=json.load(fp=f)
    print(result)

print("hashlib模块:提供数据加密和校验技术")
print("1.算法:"
      "1.1hashlib.new(name, data=b”)         生成一个hash对象"
      "1.2hashlib.hash算法名(data=b”)        生成一个使用该算法的hash对象"
      "1.3Hash对象.update(arg=None)           更新hash对象"
      "1.4Hash对象.digest()                   返回Hash算法计算得到的值(bytes类型)"
      "1.5Hash对象.hexdigest()                返回Hash算法计算得到的值(str类型)")

import hashlib
#生成has对象,第二个数据为二进制数据
result=hashlib.new('md5','123456'.encode())
#转为二进制文件
print(result.digest())
#加密
print(result.hexdigest())
#md5应用
a={'e10adc3949ba59abbe56e057f20f883e':123456}#服务器密钥数据库
b='e10adc3949ba59abbe56e057f20f883e'#用户输入的md5
print(a[b])#若MD5不匹配,登录失败

#分片进行哈希函数数据加密
res=hashlib.md5('汉莎'.encode())#直接声明MD5方式使用哈希函数
res.update('sjll'.encode())#向上方语句添加数据,尾部增加数据
print(res.hexdigest())
#验证结果是否一致
res1=hashlib.md5('汉莎sjll'.encode())
print(res1.hexdigest())#结果确实一致

#加盐,防止数据泄露;向关键数据尾部添加固定的标签,用户输入时也对用户输入添加相同的标签,对用户输入的数据加盐后加密,若和原来的一致,登陆成功;
#即使数据泄露,泄露的也是加盐后的数据
salt='家具店'.encode()
password='123456'.encode()+salt#+盐
res_2=hashlib.md5(password)
print(res_2.hexdigest())

print("base64:"
      "url编码"
      "用来将非ASCII字符的数据转换成ASCII字符的一种方法"
      "可以将不可打印的二进制数据转化为可打印的字符串")
print("1.base64方法:"
      "由于Base64编码后的数据可能会含有 + / 两个符号;"
      "如果编码后的数据用于URL或文件的系统路径中,就可能导致Bug;"
      "所以base模块提供了专门编码url的方法"
      "1.1base64.b64encode(s)            对二进制数据进行base64编码"
      "1.2base64.b64decode(s)            对通过base64编码的数据进行解码"
      "1.3base64.urlsafe_b64encode(s)    对URL进行base64编码"
      "1.4base64.urlsafe_b64decode(s)    解码")

import base64
#去除网址中文
a='https://wk.第一PPT.com/图片/ccf8989bb1717fd5360cba1aa8114431b90d8e10'.encode()
result=base64.b64encode(a)
print(result)
res=base64.b64decode(result)
print(res)

#对网址进行操作
url='https://wk.baidu.com/view/ccf8989bb1717fd5360cba1aa8114431b90d8e10'.encode()
a=base64.urlsafe_b64encode(url)
print(a)#加密
b=base64.urlsafe_b64decode(a)
print(b)

#附:对图片进行md5加密或校验,视频也一样
x=hashlib.md5()
with open("加密文件.png","rb") as f:
    for i in f:
        x.update(i)

result=x.hexdigest()
print(result)

三、转载说明

  1. 本文内容完全原创,文章完成时间2021.3.19。
  2. 若要转载本文,请在转载文章末尾附上本文链接:https://blog.csdn.net/qq_35772105/article/details/115005558
  3. 本文代码部分唯一MD5:CEA1B8AB34F0F0E61C7ADDAC0D7C811E。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魔菲赫伯特

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值