python学习笔记(十三)-- 日志、发送邮件、redis数据库

1、日志

import nnlog

log = nnlog.Logger('test.log',level='info',backCount=3,when='S')
#level----打印日志的级别,error只打印error信息,debug打印全部信息
#backCount----保留几个日志
#when----日志产生周期,D H M S ,分别是天、小时、分、秒

log.debug('debug...')#一些调试信息,看变量值这些
log.info('info...')#一些提示信息
log.warning('waring...')#警告信息
log.error('error...')#出错的时候打印

log.surprise()#可以打印看看 

2、发送邮件

import yagmail

user = 'xxxxx@163.com' #邮箱账号
passwd = 'xxxxx' #邮件授权码,开启POP3/SMTP服务,获得授权码

smtp_host = 'smtp.163.com'

mail = yagmail.SMTP(user=user,password=passwd,host=smtp_host)#连上邮箱
mail.send(to='xxx@qq.com',#发给谁
          cc='xxx@163.com',#抄送给谁
          subject='xxxxx',#主题
          contents='cccccccc',#内容
          attachments=['test.log','笔记.txt'])#附件
#一个值就写字符串,多个值就写list

3、redis数据库

关系型数据库:mysql、、msmysql
数据库、表 sql语句来操作
非关系型数据库 NOSQL
redis、mongdb、memcache
redis 数据存在内存里面的 每秒支持10W次读写
import redis

host ='127.0.0.1' #数据库ip
passwd = 'xxxx' #密码

r = redis.Redis(host=host,password=passwd,db=0,decode_responses=True)
#port 端口 默认6379
#db 选择哪个数据库 0-15
#decode_responses=True,返回的就不是bytes类型了,就是字符串了

#string类型
r.set('session_id_yanyan','xxxx123456xxx')#新增和修改
r.set('session_id_nana','xxxx123456xxx',10) #10是10秒钟,过了10秒就会被删除,此参数不是必填
result = r.get('session_id_hhh')#获取key的数据
print(result)
r.delete('session_id_hhh') #删除指定的key
r.flushdb() #清除当前数据库里面所有的key
r.flushall() #清除所有数据库里面的所有key
print(r.keys())#获取到当前数据库里面有哪些key
r.ttl(key) #获取key的失效时间
r.expire(key,100)#设置失效时间
#key加冒号,会以文件夹显示
r.set('cd:gxq','{"addr":"xxx"}')
r.set('cd:gxq','{"adddr":"ccc"}')
# print(result.decode()) #decode是把bytes类型变成字符串
#我们连接数据库的时候选了参数decode_responses为True,它会自动转换成字符串,就可以直接使用result


#hash类型
r.hset('szz_stu','nana','sdfsdfsfsf')#添加hash类型的值,外层大字典一个key,里面key--value
r.hdel('szz_stu','gxn')#删除,参数为大字典的key,里面小字典的key
r.hmset('szz_stu',{"xiaobai":'ssss','xiaohei':'ccc'})#批量往hash类型里面set数据
r.hset('szz_stu','gxn','{"money":11111,"session_id":"xxxxxxx"}')#value是字典
print(r.hgetall('szz_stu'))#打印大字典key下所有值
print(r.type('szz_stu'))#打印key的类型

#管道
p = r.pipeline() #新建了一个管道,操作比较多的时候用管道
p.set('session_id_yanyan','543221')
p.set('session_nana','sfjirgjrkvcli82389&(943kkkk')
p.delete('abc')
p.execute() #批量执行

迁移redis数据库

#把a的数据,全部迁移到b上面
#1、连上aredis和bredis
#2、从aredis里面获取到所有的key [ ]
#3、判断key的类型,如果是string类型,用get获取数据,set到新的bredis里面

import redis
host ='127.0.0.1'
passwd = 'Hxxxxxxxx*'

r = redis.Redis(host=host,password=passwd,db=0,decode_responses=True)
r2 = redis.Redis(host=host,password=passwd,db=0,decode_responses=True,port=6378)

#循环数据库里面所有key
for k in r.keys():
    if r.type(k) == 'string': #判断key的类型
        value = r.get(k) #获取key的值
        r2.set(k,value) #将获取到的key--value写进数据库
    elif r.type(k) == 'hash':
        value = r.hgetall(k)  #获取hash类型key的所有值
        r2.hmset(k,value) #写进数据库

 

 
posted @ 2019-05-16 11:40  颜颜blog  阅读(163)  评论(0编辑  收藏  举报