• Python 操作数据库


    一,安装数据库

    pip install pymysql

    pip install redis 

    二,Python 操作mysql数据库

    import pymysql
    def op_mysql(host,user,password,db,sql,port=3306,charset='utf8'):#通用数据库操作
    conn = pymysql.connect(host=host,user=user,
    password=password,
    port=port,
    charset=charset,db=db) #建立连接
    cur = conn.cursor(cursor=pymysql.cursors.DictCursor) #建立游标 来向服务器发送命令以及接收结果(找个仓库管理员帮你拿东西)
    cur.execute(sql) #执行sql 语句
    sql_start = sql[:6].upper() #取sql前6个字符串,判断它是什么类型的sql语句
    if sql_start=='SELECT' :
    res = cur.fetchall()
    # res = cur.fetchone()#只有一条数据,那么就用fetchone,超过一条数据那就用fetchall
    else:#update insert delete 操作
    conn.commit() #提交
    res = 'ok'
    cur.close() #关闭游标
    conn.close() #关闭连接
    return res
    调用函数:
    sql = 'select * from bt_stu limit 5;'
    sql2 = 'update my_user set money = "%s" where username= "%s";' % (actual_account,user) #注意引号的位置
    res = op_mysql(
    host='211.149.218.16',
    user='jxz',password='123456',#port这里一定要写int类型
    port=3306,db='jxz',charset='utf8',sql=sql2)
    print(res)

    三,Python 操作redis 数据库

    启动redis 服务: 进入 redis-server  -> cmd  -> redis-server.exe redis.windows.conf

    操作redis 

    1,string 类型

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

     

    
    

    2,hash 类型 (没有过期时间)

    r = redis.Redis(host='127.0.0.1',port=6379,db=2)#连上redis
    r.hset('sessions','nhy','123456') #插入数据
    r.hset('sessions','ybq','1234562')
    r.hset('sessions','xsr','1234561')
    print(r.hget('sessions','xsr')) #获取数据
    redis_data = r.hgetall('sessions') #获取到hash类型里面所有的数据
    print(redis_data)
    all_data = {}
    for k,v in redis_data.items(): #把hash类型里面所有的数据转成正常的字典
    k = k.decode()
    v = v.decode()
    all_data[k]=v
    print(all_data)
    输出结果:

    b'1234561'
    {b'ybq': b'1234562', b'xsr': b'1234561', b'nhy': b'123456'}
    {'ybq': '1234562', 'xsr': '1234561', 'nhy': '123456'}

    3,层级类型  (有文件夹)

    import redis
    r = redis.Redis(host='127.0.0.1',port=6379,db=2)#连上redis
    r.set('txz:llq','llq123') #
    r.set('txz:llq12','llq1234') #
    r.set('txz:llq13:llq13','llq1234')
    print(r.keys())#获取所有的key
    print(r.keys('txz*')) #以txz开头的key
    print(r.type('sessions'))#获取key的类型
    输出结果:

    [b'txz:llq12', b'txz:llq', b'nhy_session', b'sessions', b'txz:llq13:llq13']
    [b'txz:llq12', b'txz:llq', b'txz:llq13:llq13']
    b'hash'

      4,操作redis 数据库string 类型通用函数

    import redis
    def op_redis(host,password,k,v=None,port=6379,db=0): #操作redis 数据库string 类型通用函数
    r = redis.Redis(host=host,password=password,port=port,db=db)
    if v:
    r.set(k,v)
    res = 'ok'
    else:
    res = r.get(k)
    if res: #这里是判断有没有get到数据
    res = res.decode()
    else:
    res = None
    return res

    四,redis 数据库备份

    import 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

     

  • 相关阅读:
    SQL面试题:有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列
    Centos下Yum安装PHP5.5
    docker 容器内服务自启动
    centos6.6系统初始化脚本
    不重启linuxVMWare虚拟机添加虚拟磁盘
    linux(centos6)搭建ftp服务器
    记一次扩容操作
    mongodb数据迁移的两种方式
    mongodb 数据库操作--备份 还原 导出 导入
    关于PHP参数的引用传递和值传递
  • 原文地址:https://www.cnblogs.com/chendai21/p/8341893.html
Copyright © 2020-2023  润新知