码迷,mamicode.com
首页 > 数据库 > 详细

python学习笔记(九):操作数据库

时间:2018-01-06 23:22:11      阅读:254      评论:0      收藏:0      [点我收藏+]

标签:结果   shu   roo   不同   字典   hal   get   哈希类型   exe   

我们在写代码的时候,经常会操作数据库,增删改查,数据库有很多类型,关系型数据库和非关系数据库,这里咱们介绍一下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

 

python学习笔记(九):操作数据库

标签:结果   shu   roo   不同   字典   hal   get   哈希类型   exe   

原文地址:https://www.cnblogs.com/hanzhao1987/p/8215509.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!