zoukankan      html  css  js  c++  java
  • python操作数据库

    作者:python技术人
    博客:https://www.cnblogs.com/lpdeboke

    我们在写代码的时候,经常会操作数据库,增删改查,数据库有很多类型,关系型数据库和非关系数据库,这里咱们介绍一下python怎么操作mysql、redis和mongodb。

    一、python操作mysql数据库 python3中操作mysql数据需要安装一个第三方模块,pymysql,使用pip install pymysql安装即可,在python2中是MySQLdb模块,在python3中没有MySQLdb模块了,所以使用pymysql。
     import pymysql
        # 创建连接,指定数据库的ip地址,账号、密码、端口号、要操作的数据库、字符集
        conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123456', db='data',charset='utf8')
        # 创建游标
        cursor = conn.cursor()
        # 执行SQL,并返回收影响行数
        effect_row = cursor.execute("update students set name = 'niuhy' where id = 1;")
        # 执行SQL,并返回受影响行数
        #effect_row = cursor.execute("update students set name = 'niuhy' where id = %s;", (1,))
        # 执行SQL,并返回受影响行数
        effect_row = cursor.executemany("insert into students (name,age) values (%s,%s); ", [("andashu",18),("12345",20)])
        #执行select语句
        cursor.execute("select * from students;")
        #获取查询结果的第一条数据,返回的是一个元组
        row_1 = cursor.fetchone()
        # 获取前n行数据
        row_2 = cursor.fetchmany(3)
        # 获取所有数据
        row_3 = cursor.fetchall()
        # 提交,不然无法保存新建或者修改的数据
        conn.commit()
        # 获取最新自增ID
        new_id = cursor.lastrowid    
        print(new_id)
        # 关闭游标
        cursor.close()
        # 关闭连接
        conn.close()
        上面的操作,获取到的返回结果都是元组,如果想获取到的结果是一个字典类型的话,可以使用下面这样的操作
     
        import pymysql
        # 创建连接,指定数据库的ip地址,账号、密码、端口号、要操作的数据库、字符集
        conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123456', db='data',charset='utf8')
        # 创建游标
        cursor = conn.cursor()
        
        cursor = coon.cursor(cursor=pymysql.cursors.DictCursor)#需要指定游标的类型,字典类型
        # 执行SQL
        cursor.execute("select * from user;")
        #获取返回结果,这个时候返回结果是一个字典
        res = cursor.fetchone()#返回一条数据,如果结果是多条的话
        print(res)
        res2 = cursor.fetchall()#所有的数据一起返回
    
    
    二、操作redis redis是一个nosql类型的数据库,数据都存在内存中,有很快的读写速度,python操作redis使用redis模块,pip安装即可
     import redis
        r = redis.Redis(host='127.0.0.1',port=6379,db=0)#指定连接redis的端口和ip以及哪个数据库
        r.set('name', 'value')#set string类型的值
        r.setnx('name2', 'value')#设置的name的值,如果name不存在的时候才会设置
        r.setex('name3', 'value', 3)#设置的name的值,和超时时间,过了时间key就会自动失效
        r.mset(k1='v1',k2='v2')#批量设置值
        r.get('name')#获取值
        print(r.mget('k1','k2'))#批量获取key
        
        r.delete('name')#删除值
        r.delete('k1','k2')#批量删除
        #======下面是操作哈希类型的
        r.hset('hname', 'key', 'value')#set 哈希类型的值
        r.hset('hname', 'key1', 'value2')#set 哈希类型的值
        r.hsetnx('hname','key2','value23')#给name为hname设置key和value,和上面的不同的是key不存在的时候
        #才会set
        r.hmset('hname',{'k1':'v1','k2':'v2'})#批量设置哈希类型的key和value
        r.hget('name', 'key')#获取哈希类型的值
        print(r.hgetall('hname'))#获取这个name里所有的key和value
        r.hdel('hname','key')#删除哈希类型的name里面指定的值
        print(r.keys())#获取所有的key
    

    redis-py使用connection pool来管理对一个redis server的所有连接,避免每次建立、释放连接的开销。默认,每个Redis实例都会维护一个自己的连接池。可以直接建立一个连接池,然后作为参数Redis,这样就可以实现多个Redis实例共享一个连接池。

        import redis  
          
        pool = redis.ConnectionPool(host='127.0.0.1', port=9212)  
        r = redis.Redis(connection_pool=pool)  
        r.set('one', 'first')  
        r.set('two', 'second')  
        print r.get('one')  
        print r.get('two')  
    
    

    本文转自:https://www.cnblogs.com/feng0815/p/7818852.html,如有侵权请联系我删除!

  • 相关阅读:
    在多租户(容器)数据库中如何创建PDB:方法6 DBCA本地克隆PDB
    在多租户(容器)数据库中如何创建PDB:方法5 DBCA远程克隆PDB
    1级搭建类104-Oracle 12cR2 单实例 FS(阿里云)公开
    在多租户(容器)数据库中如何创建PDB:方法4 克隆远程Non-CDB
    在多租户(容器)数据库中如何创建PDB:方法3 克隆远程PDB
    番外:克隆本地PDB中其他参数和子句的说明
    在多租户(容器)数据库中如何创建PDB:方法2 克隆本地PDB
    Oracle Solaris 10 重启后提示 Bad PBR sig
    在多租户(容器)数据库中如何创建PDB:方法1 从种子创建PDB
    0级搭建类009-Fedora 30 安装(F30) 公开
  • 原文地址:https://www.cnblogs.com/lpdeboke/p/11262991.html
Copyright © 2011-2022 走看看