zoukankan      html  css  js  c++  java
  • python(14)---发邮件、写日志、操作redis数据库

    一、写邮件

    import yagmail
    
    user = '1597078213@qq.com'
    password = 'rtcxbuejmqrdgjcd'  #不是qq密码,是邮件授权码 在qq邮箱,设置--账户--开启POP3/SMTP服务,获得授权码
    
    m=yagmail.SMTP(host='smtp.qq.com',user=user,password=password)  #host-- 163邮箱用 tp.163.com
    
    m.send(to=['511402865@qq.com','xxx.qq.com'],cc=['xx.qq.com','xxx.qq.com'],
           subject='明天不上课',contents='明天去体检',attachments='学生.xls',
           smtp_ssl=True)
    
    # to 收件人,发送给多个人时用list
    #cc  抄送给谁,多个人时用list
    #attachments 附件  用官方yagmail模块,附件名为中文是会显示乱码;改用nn改过的yagmail模块
    # smtp_ssl=True  QQ邮箱需加上,163邮箱不用

    二、写日志

    日志级别:
    error
    warning
    info
    debug  默认
    级别越低,打印的信息越多 
    
    import nnlog  #导入的是nn自己写的log模块
    
    log =nnlog.Logger('my.log',level='info',backCount=3,when='S')
    #level--打印日志的级别  如果为error级别,比它级别低的日志都不会打印 
    #backCount--保存日志的最大个数,超过自动删除前面的
    #when--产生日志的频率  D-每天  M-每分  S-每秒
    
    log.info('lihui登录。。。')
    log.error('数据库连接失败')

    三、操作redis数据库

    先安装redis数据库

    console中执行命令:   select 1 — 选择数据库 1

                                         set  name  lh   — 添加/修改数据

                                         get  name    — 取值 

    # 关系型数据库:oracle、mysql...
          #有表、有sql
          #数据放在磁盘上
    
    # 非关系型数据库  nosql:redis,mongodb,memcache
            # 没有表
            # 没有sql语句
            # k-v
            # 每秒支持30w次读写
            # 数据全部都是放在内存中的,性能高 (电脑一重启就没了)
    
    import redis
    
    ip ='118.XX.3.40'
    password='HK139bckk'
    
    r= redis.Redis(host=ip,password=password,port=6379,db=3,decode_responses=True)
    #默认端口 6379
    #db--选择哪个数据库
    #加了decode_responses=True ,返回的二进制数据直接decode,下面就不用自己再写decode转换了
    
    r.set('lh2','nihaoya') #新增和修改都用set
    
    res =r.get('lh2')     #获取数据
    print(res)    #b'nihaoya'  没有加 decode_responses=True 时
    print(res.decode())  #'nihaoya'  decode() 二进制转成字符串      encode() 字符串转二进制
    
    r.delete('lh2') #删除
    r.flushdb() #删除这个数据库里面所有的key
    
    r.set('lh123','dudududu',20)  #设置有效时间为20s
    
    res=r.get('session:lh') #数据库中文件夹分类  session即为文件夹名
    print(res.decode())
    
    print(r.keys()) #获取所有的key
    print(r.keys('session*')) #过滤以session开头的所有的key
    
    # res=r.get('mcx')
    # print(res.decode())
    
    #redis中的哈希类型  就是一个两层字典
    #哈希类型 的方法和其他数据类型的方法不一样
    session={
        "lh":{'age':27,'sex':'nv'},
        "lh2":{'age':28,'sex':'nan'}
    }
    
    r.hset('jnz_stus','lw','hehehe')  #添加hash类型的值:jnz_stus--外层大字典的key; lw--外层字典小key; hehehe--内层字典value
    res =r.hget('jnz_stus','mcx')  #获取里面小key的值
    print(res.decode())
    
    r.delete('jnz_stus') #删除大key jnz_stus
    r.hdel('jnz_stus','lw') #删除指定的小key
    
    res = r.hgetall('jnz_stus') #获取到大key里面的所有数据
    res_new={}
    for key ,value in res.items():  #没有加decode_responses=True时,需要手动循环decode
        res_new[key.decode()]=value.decode()
    print(res)
  • 相关阅读:
    基于VLC的视频播放器
    IOS开发之新浪微博OAuth2
    Android之官方导航栏ActionBar
    IOS中键盘隐藏几种方式
    在Android中使用Android Ksoap2调用WebService
    Android之属性动画(二)
    IOS 内存管理
    利用scp 远程上传下载文件/文件夹和ssh远程执行命令
    Centos 检查磁盘读写性能
    JPA, JNDI, OSGi
  • 原文地址:https://www.cnblogs.com/HathawayLee/p/9795156.html
Copyright © 2011-2022 走看看