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) #写进数据库