• 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) #写进数据库
     
  • 相关阅读:
    数组(Array)
    js数据类型自动转化规律
    ES6-12.Symbol
    彻底搞懂prototype和__proto__
    API测试利器——Postman(1. 安装和启动)
    全国各城市的代码邮编sql(mysql版)
    SQL执行的顺序
    jQuery $.each用法
    使用maven工具对maven项目进行打包所出现的问题
    关于Notepad++中用正则表达式匹配中文的问题
  • 原文地址:https://www.cnblogs.com/yanyan-/p/10874681.html
Copyright © 2020-2023  润新知