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)

 

posted @ 2017-11-29 09:07  *西西*  阅读(282)  评论(0编辑  收藏  举报