python操作数据库
一.python操作数据库
这里主要介绍python3的一些操作方法.以下介绍python操作两种数据库,两种数据库部分好坏,只是看当时哪一种更适合所开发的系统框架.
(一)python操作mysql数据库
mysql中的数据是存在磁盘中,相对于redis速度要慢些.
在python3中操作数据库,首先要安装pymysql,直接在命令行中敲pip3 install pymysql.
1 import pymysql 2 ip='211.149.147.233' 3 port=3306 4 passwd='111111' 5 user='byz' 6 db='byz' 7 以下操作返回的是元组: 8 conn=pymysql.connect(host=ip,user=user,port=port,passwd=passwd,db=db,charset='utf8') 9 # 建立数据库连接,指定数据库的数据库的ip地址,账号、密码、端口号、要操作的数据库、字符集 10 cur=conn.cursor(cursor=pymysql.cursors.DictCursor) 11 # 在连接上建立一个游标 12 sql='insert into py(id,name,sex) VALUE(6,"panyang","nv");' 13 # sql语句,在表py中插入一条id=6,name=panyang,sex=nv的数据 14 # sql2='select * from py' 15 cur.execute(sql2) 16 # 执行一条数据库语句并返回受影响行数.查询结果是一个元组 17 18 print(cur.fetchall()) #获取所有的数据,是一个元组 19 cur.scroll(0,mode='absolute') # 移动游标 20 print(cur.fetchone()) #一次获取一条 21 conn.commit() #要提交一下,inseert,update需要commit一下 22 cur.close() #数据库连接了就要关闭,有连接就有关闭 23 conn.close() 24 25 # 以下操作返回的是字典 26 import pymysql 27 conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', 28 passwd='123456', db='data', charset='utf8') 29 # 创建连接,指定数据库的ip地址,账号、密码、端口号、要操作的数据库、字符集 30 cursor = conn.cursor() 31 # 创建游标 32 cursor = coon.cursor(cursor=pymysql.cursors.DictCursor) 33 # 需要指定游标的类型,字典类型 34 cursor.execute("select * from user;") 35 # 执行SQL 36 # 获取返回结果,这个时候返回结果是一个字典 37 res = cursor.fetchone() 38 # 返回一条数据,如果结果是多条的话 39 print(res) 40 res2 = cursor.fetchall() # 所有的数据一起返回
(二)python操作redis
redis是nosql类型的数据库,数据存在内存中,读写速度较快.以下是redis中的一些操作:
1 import redis,json 2 ip='211.149.xxx.xx' 3 port=6379 4 db=7 5 passwd=xxxxxx 6 r=redis.Redis(host=ip,port=port,db=db,password=passwd) 7 # 连接数据库 8 # {"name:"panyang} 9 r.set('myname','panyang') 10 # 往redis里面存键值对 11 # redis里面存的都是字符串 12 name=r.get('myname') 13 # redis里面获取到的诗句都是bytes类型的 14 print(name.decode()) 15 # byte转成字符串.要使用.decode方法给他转成字符串才能继续操作 16 new_name=json.loads(name.decode()) 17 #解码json格式 18 print(type(new_name)) 19 20 r.setex('panyang','hahaha','20') #创建一个数据,20s中就没有了,有失效时间 21 # 可以设置key的失效时间 22 print(r.get('ahha')) #如果get一个不存在的值就返回none 23 r.mset(panyang1='panyang1',panyang2='panyang2') 24 # 批量set值的时候使用 25 r.delete('name') #删除某个key 26 r.delete('k1','k2')#批量删除 27 # print(r.keys('p*')) #获取所有的key,byte类型,支持正则表达式 28 # 上面的key的类型是string类型 29 30 # 以下是哈希类型的key 31 r.hset('user_session','panyang1','18') 32 r.hset('myname:panyangyang','panyang','hahahahahahaha') 33 # set哈希类型的值 34 # print(r.hget('user_session','panyang')) 35 # 获取指定的name里面的值 36 # print(r.hgetall('user_session')) 37 # 获取哈希类型里面所有的值 38 # r.delete('key') 39 # r.hdel('user_session','panyang') 40 # r.set('user:panyang','hahaha')