zoukankan      html  css  js  c++  java
  • day6 数据库 redis time和MD5模块

    os模块补充

    os.system(ipconfig)执行操作系统命令

    os.popen('ipconfig')获取返回结果,需要read

    res = open('ipconfig')      print(res.read())

    random模块

    random.randint(1,20)随机取1-19,顾头不顾尾

    random.choice([1,2,3])随机取一个元素

    randome.sample(’hello world‘,2)随机获取多个元素,并返回list

    random.unifom(1,9)随即浮点数,可指定范围

    random.shuffle(x)洗牌,打乱

    例子:res = random.unifom(1,9)

    print('%.2f'$res)保留两位小数            #练习题:随机生成手机号

    json导入

    f = open('1.txt,'w')    name = {'name':'wjx'}

    res = json.dumps(names,ensure_ascii=False)#把字典转换成json串,加  ensure_ascil=False  是在包含中文情况下

    f.write(res) 

    第二种:

    d = name = {'name':'wjx'}

    d_json = json.dumps(d)

    json.dumps(d,f)写入文件

    第三种:

    json_data ={'name':'wjx'}

    dict = json.loads(json_data)#  需要修改

    要呈现json显示,首先把文件后缀名改成json结尾

    pycharm左上角  code-reformat-code      快捷键 ctrl + alt + L

    总结:

    json.dumps()是将字典转化成字符串

    json.loads()是将字符串转化为字典

    json.load()把文件对象传入并且转化成字典,不需要读

    json.dump()直接将内容写入文件

    如果json中有中文显示

    json.dumps(name,ensure_ascii=False)

    json.losds(names)把json转化为字典

    load方法

    res = open('1.txt')

    names = json.load(res)传得是文件对象,不需要读

    d={"a":"abc"}
            d_json=json.dumps(d)
            json.dump(d,fw)#直接写到文件里面

    time模块

       time.strftime('%Y%m%d')#取当前时间
            time.time()#取时间戳
            time.sleep(10)#延时10秒钟

       time.gtime()#将时间戳转化为时间元组

       time.localtime()取当前时间元组,也可将时间戳转化为时间元组

       time.mktime()把时间元组转化为时间戳,#用得不多
            import datetime
            now = datetime.datetime.now()  # 当然时间格式化输出
            # print(str(now))
            print(datetime.datetime.now() + datetime.timedelta(3))  # 3天后的时间
            print(datetime.datetime.now() + datetime.timedelta(-3))  # 3天前的时间
        时间表示方式有2种:
            1、时间戳

            def transfer(timestamp,format='%Y-%m-%d %H:%M:%S'):
                import time
                '''
                把时间戳转成格式化输出的字符串
                '''
                time_tuple = time.gmtime(timestamp)#先把时间戳转成时间元组
                res = time.strftime(format, time_tuple) #格式化时间
                return res
            def transfer2(time_str,format='%Y%m%d%H%M%S'):
                import time
                '''
                把格式化好的时间字符串转成时间戳
                '''
                time_tuple = time.strptime(time_str, format)
                res = time.mktime(time_tuple)
                print(res)
                return int(res)
            def get_other_time(day,format='%Y%m%d%H%M%S'):
                #这个函数是用来获取N天前的时间,或者N天后的时间
                #day如果传入负数,那么就是几天前的。传入正数,就是几天后的
                import datetime
                res = datetime.datetime.now()+datetime.timedelta(day)#取几天后的
                res_time = res.strftime(format)#格式化时间
                print(res_time)
                return res_time

    取当前时间

    print(time.strftime('%Y-%m-%d',time.localtime(time.time())))
        

    hashlid模块

    s = '123'

    hew_s = ('jmy123'.encode())#把字符串

    new_s.decode()字节类型转化为字符串

    md.digest()加密后的字符串

    md.hexdigets()

    def md5_passwd(str,sort='123456'):#sort是盐值
        import hashlib
        str = str+sort
        md = hashlib.md5()#构造一个MD5
        md.update(str.encode())#加密str
        res = md.hexdigest()#加密后的字符串
        return res
    print(md5_passwd('nhy123'))

    redis模块

    import redis

    #1、连接它

    #下面都是操作string类型的
    # r.set('nhy','nizhenhao!')#set数据
    # print(r.get('ggy').decode())#get数据
    # print(r.keys())#获取所有的key
    #下面操作hash类型
    #r.hset('nhy1','age','18')
    # r.hset('nhy1','age1','18')
    # r.hset('nhy1','age2','18')
    # print(r.hget('nhy1','age'))
    # nhy=r.hgetall('nhy1')#获取hash类型这个name里面所有的数据
    # r.delete('nhy1')#删除key
    # {"age3":"23","age2":"20"}
    # new_nhy={}
    # for k in nhy:
    #     new_k = k.decode()#把k转成字符串
    #     v = nhy[k]
    #     new_v= v.decode()#把v转成字符串
    #     new_nhy[new_k]=new_v
    # print(new_nhy)
    # print(r.type('lsx'))

    #需求是把一个redis库里面所有的数据,导入到另一个redis里面
    #1、r1 和r2 连接上r1和r2两个数据库
    #2、 获取到r1上面所有的key   keys
    #3、判断key的类型,r.type(k),get hgetall .hset() .set()
    r1=redis.Redis(host='211.149.218.16',port=6378,password='123456',db=2)#获取数据
    r2=redis.Redis(host='211.149.218.16',port=6378,password='123456',db=3)#写数据
    keys = r1.keys()#r1数据库上所有的key
    for k in keys:
        if r1.type(k)==b'hash':#判断是否为哈希类型,因为redis里面返回的数据都是bytes类型的,
            #所以在hash前面加上b
            hash_data = r1.hgetall(k)#获取哈希的类型的数据
            for k2,v in hash_data.items():#循环刚才获取到的字典
                r2.hset(k,k2,v)#set哈希类型的值
        else:
            v = r1.get(k)#从r1里面获取值,
            r2.set(k,v)#set进去

    操作mysql数据库

    def op_mysql(host,user,passwd,db,sql,port=3306,charset='utf8'):
        import pymysql
        from pymysql.cursors import DictCursor#游标返回数据是字典
        #建立连接
        coon = pymysql.connect(host=host,user=user,passwd=passwd,db=db,charset=charset,port=port)
        cur = coon.cursor(DictCursor)#建立游标,返回时一个字典
        cur.execute(sql)#执行sql语句
        if sql.strip().startswith('select'):#判断是都以select开头,并且去除空格
            res = cur.fetchall()#获取全部数据
            print(res)
        else:
            coon.commit()#只要不是查询语句都需要进行提交
            res = 'ok'
        cur.close()#关闭游标
        coon.close()#关闭连接
        print(res)
        return res
    sql1 = 'insert into user values(5,"szq","123456",3000);'
    sql2 = 'update user set username="hxm" where id=5;'
    sql3 = 'delete from user where id=5;'
    sql4 = 'select * from user where id=1;'
    op_mysql(host='192.168.247.131',port=3306,user='root',passwd='123456',db='wjx',sql=sql1)
    op_mysql(host='192.168.247.131',port=3306,user='root',passwd='123456',db='wjx',sql=sql2)
    op_mysql(host='192.168.247.131',port=3306,user='root',passwd='123456',db='wjx',sql=sql3)
    op_mysql(host='192.168.247.131',port=3306,user='root',passwd='123456',db='wjx',sql=sql4)

  • 相关阅读:
    服务器搭建域控与SQL Server的AlwaysOn环境过程(二) 搭建客户端节点 服务器
    服务器搭建域控与SQL Server的AlwaysOn环境过程(一) 搭建域控服务器
    React中的AES加解密请求
    React项目构建(利用webpack打包)
    解决IIS服务器部署 字体图标找不到的原因
    iOS开发之视频播放31次、15次后错误,NSLocalizedFailureReason=此媒体所需的解码器正忙
    iOS开发之视频播放功能、边播放边缓存
    iOS开发之获取最上层 Window
    iOS开发之APP启动视频
    iOS开发之图片base64编码处理
  • 原文地址:https://www.cnblogs.com/wangjunxi/p/7827985.html
Copyright © 2011-2022 走看看