zoukankan      html  css  js  c++  java
  • 第十三节:telnetlib、redis、pymysql模块

    telnetlib模块案例:

    知识点:

    tn = telnetlib.Telnet()实例化
    tn.open('地址','端口',command)打开链接
    tn.read_until()判断链接状态
    tn.write(b'')二进制的方式输入命令
    tn.read_all()获取所有信息
    tn.close()关闭链接
    del tn 回收内存
    import telnetlib,re
    class TelnetInfo():
    
        def telnetdo(self, host, port, command):
    
            tn = telnetlib.Telnet()
            try:
                tn.open(host, port, timeout=2)
            except:
                print("can not open host:%s port:%s" % (host, port))
                exit(1)
            tn.read_until(b"Username:")
            tn.write(b'admin
    
    ')
            tn.read_until(b"Password:")
            tn.write(b'admin
    
    ')
            tn.write(b'
    
    ')
            tn.write(b'
    
    ')
            tn.write(command.encode('ascii') + b'
    
    ')
            tn.write(b"bye
    
    ")
            ret = tn.read_all()
            tn.close()
            del tn
            return ret
    
    tl=TelnetInfo()
    data=tl.telnetdo('127.0.0.1','2555','fj')
    print(data)

    pymysql查询知识点:

    import pymysql
    db = pymysql.connect(host='127.0.0.1',user='kedacom',passwd='KedaMysql16#',db='ap',charset='utf8')
    cur = db.cursor()
    data1 = cur.execute('select * from user_info')
    data2 = cur.fetchone()  #获取一条数据,默认获取第一条数据,该条数据组成一个元组
    da = data2[4]           #通过切片获取该条数据中的一个数据
    data3 = cur.fetchall()  #获取全部数据,每一行的数据存在一个元组中

     redis模块查询知识点:

    常用命令:

    import redis
    
    r = redis.Redis(host='10.67.16.31', port=6379,password='KedaRedis16',db=0,decode_responses=True)
    #string常用查询
    print(r.get('name'))    #查询string类型的键值
    print(r.getrange('name', 0, 3)) #通过索引获取值的部分数据
    print(r.mget('k1')) #查询多个键对应的值
    
    #hash常用查询
    print(r.hexists("hash1", 'key'))    #判断是key否存在,返回布尔值
    print(r.hkeys("hash1")) #获取hash中所有的key
    print(r.hvals("hash1")) #获取hash中所有的value
    print(r.hget("hash1", "k1"))    #获取单个键值
    print(r.hmget("hash1", "k1", "k2"))     #获取多个hash的key对应的值
    print(r.hgetall("hash1"))   #取出所有键值对
    print(r.hlen('hash1'))  #计算所有键的数量
    
    #list常用查询
    print(r.llen("list1"))  # 计算列表长度
    print(r.lrange('list1', 0, -1)) #切片打印列表元素
    添加
    r.lpush("list1", 77,)   #从左边向列表中添加元素,没有就新建
    r.rpush("list1", 88)    #从右边向列表中添加元素,没有就新建
    lpushx(name,value)        #从右边向列表中添加元素,没有无法添加
    r.linsert("list1", "before", "11", "00")   # 往列表中左边第一个出现的元素"11"前插入元素"00"
    r.lset("list1", 0, -11)    # 把索引号是0的元素修改成-11
    
    
    #set常用查询
    print(r.scard("set1"))      # 计算集合的长度
    print(r.smembers("set1"))   # 获取集合中所有的成员
    
    #zset有序集合
    print(r.zcard("zset1"))     # 计算有序集合的长度
    print(r.zrange("zset1", 0, -1))   # 获取有序集合中所有元素

    string类型其他参数

    redis 提供两个类 Redis 和 StrictRedis, StrictRedis 用于实现大部分官方的命令,Redis 是 StrictRedis 的子类,用于向后兼用旧版本。
    redis 取出的结果默认是字节,我们可以设定 decode_responses=True 改成字符串。
    redis-py 使用 connection pool 来管理对一个 redis server 的所有连接,避免每次建立、释放连接的开销。
    默认,每个Redis实例都会维护一个自己的连接池。可以直接建立一个连接池,然后作为参数 Redis,这样就可以实现多个 Redis 实例共享一个连接池
    
    
    import redis
    pool = redis.ConnectionPool(host='localhost', port=6379, decode_responses=True)
    r = redis.StrictRedis(host='localhost', port=6379, db=0)实例化
    r = redis.Redis(host='localhost', port=6379, decode_responses=True)  
    string类型键值操作
    set(name, value, ex=None, px=None, nx=False, xx=False)
    在 Redis 中设置值,默认,不存在则创建,存在则修改。
    参数:
    ex - 过期时间(秒)
    px - 过期时间(毫秒)
    nx - 如果设置为True,则只有name不存在时,当前set操作才执行
    xx - 如果设置为True,则只有name存在时,当前set操作才执行
    
    setnx(name, value)设置值,只有name不存在时,执行设置操作
    setex(name, time, value)    time - 过期时间秒
    psetex(name, time_ms, value)设置值    time_ms - 过期时间毫秒
    
    r.set('foo', 'bar',ex=3,nx=True)设置字符串键值,存活时间3秒  
    r.get('foo')获取字符串键值或者r['foo']
    
    r.mset(k1="v1", k2="v2")批量设置值
    r.mget("k1", "k2")批量获取值
    
    getset(name, value)设置新值并获取旧值
    
    getrange(key, start, end)    获取子序列(根据字节获取,非字符,一个汉字三个字节,一个字母一个字节,0,2切片前三位,0,-1所有
    setrange(name, offset, value) 对 name 对应值的二进制表示的位进行操作offset是二进制位的索引,value是值1或者0 
    getbit(name, offset)获取name对应的值的二进制表示中的某位的值 (0或1)
    bitcount(key, start=None, end=None)获取name对应的值的二进制表示中 1 的个数key - Redis的name  start - 字节起始位置 end - 字节结束位置
    bitop(operation, dest, *keys)获取多个值,并将值做位运算,将最后的结果保存至新的name对应的值operation - AND(并) 、 OR(或) 、 NOT(非) 、 XOR(异或) dest - 新的Redis的name *keys - 要查找的Redis的name
    strlen(name)返回name对应值的字节长度(一个汉字3个字节)
    incr(self, name, amount=1)自增 name 对应的值,当 name 不存在时,则创建 name=amount,否则,则自增。name - Redis的name    amount - 自增数(必须是整数)
    incrbyfloat(self, name, amount=1.0)自增 name对应的值,当name不存在时,则创建name=amount,否则,则自增。name - Redis的name amount - 自增数(浮点型)
    append(key, value)在redis name对应的值后面追加内容    key - redis的name    value - 要追加的字符串

    hash类型:

     string模块

    String模块中的常量:
    
    string.digits:数字0~9
    
    string.ascii_letters:所有字母(大小写)
    
    string.lowercase:所有小写字母
    
    string.printable:可打印字符的字符串
    
    string.punctuation:所有标点
    
    string.uppercase:所有大写字母
    
    作者:朝畫夕拾
    链接:https://www.jianshu.com/p/2bc233ff2e66
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
    

      

  • 相关阅读:
    Linux中的用户和用户组
    GCC编译过程
    C++设计模式——单例模式(转)
    快速排序之python
    归并排序之python
    计数排序之python
    希尔排序之python
    插入排序之python
    选择排序之python
    冒泡排序之python
  • 原文地址:https://www.cnblogs.com/sxdpython/p/12709845.html
Copyright © 2011-2022 走看看