zoukankan      html  css  js  c++  java
  • python操作数据库(mysql、redis)

    一、python操作mysql数据库 

    python3中操作mysql数据需要安装一个第三方模块,pymysql,使用pip install pymysql安装即可。import pymysql# pyoracl

    # 1、连接上mysql  ip 端口号  密码 账号 数据库
    # 2、建立游标
    # 3、执行sql
    # 4、获取结果
    # 5、关闭连接、关闭游标
    #打开仓库大门
    conn = pymysql.connect(host='211.149.218.16',
    user='jxz',passwd='123456' , #port这里一定要写int类型
    port=3306,db='jxz',charset='utf8') #charset必须写utf8,不能写utf-8

    cur = conn.cursor(cursor=pymysql.cursors.DictCursor) #建立游标,游标你就认为是仓库管理员‘cursor=pymysql.cursors.DictCursor’想返回的结果是字典,指定cursor类型
    sql = 'select * from bt_stu limit 5;'
    cur.execute(sql) #执行sql语句

    sql1 = 'insert into seq (red,blue) value (%s,%s);'
    all_res =[
    ['11','04,14,15,11,10,04'],
    ['15','02,12,05,04,06,01'],
    ['05','02,12,05,04,06,01']
    ]
    cur.executemany (sql1,all_res) #批量执行
    conn.commit() #提交 # update delete insert 需要提交
    # res = cur.fetchall() #获取sql语句执行的结果,它把结果放到一个元组里,每一条数据也是一个元组,2维
    res = cur.fetchone() #只获取一条结果,它的结果是一个1维元组

    # print('fetchall',cur.fetchall())
    # cur.scroll(0,mode='absolute')#移动游标,到最前面
    # cur.scroll(3,mode='relative')#移动游标,相对于当前位置的
    #只有一条数据,那么就用fetchone,超过一条数据那就用fetchall

    cur.close() #关闭游标
    conn.close() #关闭连接

    二、操作redis redis是一个nosql类型的数据库,数据都存在内存中,有很快的读写速度,python操作redis使用redis模块,pip install redis安装即可

    import redis

    #string类型
    r = redis.Redis(host='211.149.218.16',port=6379,password='123456',db=2)#连上redis
    r.get('hahahsfdfsdf')   #获取值
    #r.set('nhy_session','201801211505') #set数据
    # print(r.get('123').decode()) #redis里面取出来的数据都是bytes类型的,所以要用.decode方法转成字符串
    # r.delete('123')#删除一个
    #r.setex('nhy','hahah',20) #可以指定key的失效时间,单位是秒

    #下面这种是有层级的,以冒号分割
    # r.set('txz:ybq','没交') #
    # r.set('txz:haixia','交了') #
    # set  get delete setex 都是针对string类型的  k - v

    #hash类型
    # r.hset('sessions','nhy','123456') #插入数据
    #r.hget('sessions','xsr') #获取数据
    # print(r.hgetall('sessions'))#获取到hash类型里面所有的数据
    #把hash类型里面所有的数据转成正常的字典
    all_data = {}
    for k,v in redis_data.items():
    v = v.decode()
    all_data[k]=v
    #hash类型没有过期时间

    # print(r.keys())#获取所有的key
    # print(r.keys('txz*')) #以txz开头的key
    # print(r.type('sessions'))#获取key的类型

    redis数据迁移
    思路:
    # 1、建立两个redis连接
    #1、src
    # 2、 target
    #2、获取到所有的key,kyes ()
    # 3、判断key的类型,string hash
    import redis

    src_redis = redis.Redis(host='211.149.218.16',port=6379,password='123456',db=2)#连上redis
    target_redis = redis.Redis(host='211.149.218.16',port=6379,password='123456',db=14)#连上redis
    for key in src_redis.keys():
    if src_redis.type(key) == b'string': #判断key的类型,因为redis数据取出来都是二进制的,所以这里也用bytes
    v = src_redis.get(key) #先获取到原来的数据
    target_redis.set(key,v) #再set到新的里面
    else:
    all_hash_data = src_redis.hgetall(key) #先获取到hash类型里面所有的数据
    for k,v in all_hash_data.items(): #因为hash类型的获取到之后是一个字典,所以这里循环字典
    target_redis.hset(key,k,v) #key是外面的大key,k是里面的小k,v就是小k对应的value
     
     
  • 相关阅读:
    SQLServer 知识点
    Entity转换为ViewModel时提供的一种转换方法
    Linq中IGrouping转换为IQueryable
    封装整形属性时对应到枚举
    新的转换列表方式
    工作态度
    EasyFrame
    NewCloud
    将博客搬至CSDN
    Html的语义化
  • 原文地址:https://www.cnblogs.com/yzhuahai/p/12639091.html
Copyright © 2011-2022 走看看