python -- 操作数据库
1.操作mysql
python3操作mysql,需要导入第三方模块【pymysql】,使用【pip install pymysql】即可安装,python2中需要导入MySQLdb模块,
以python3为例予以说明:
1 import pymysql 2 ip='192.168.10.65' 3 port=3306 4 passwd='root' 5 user='root' 6 db='test' 7 8 #建立数据库连接 9 conn = pymysql.connect(host=ip,user=user,port=port,passwd=passwd,db=db 10 ,charset='utf8') 11 #建立游标 12 cur= conn.cursor(cursor=pymysql.cursors.DictCursor) 13 sql = 'insert into nhy(id,name,sex) VALUE (5,"pjb","女");' 14 sql2 = 'select * from nhy;' 15 #执行sql 16 cur.execute(sql2) 17 #获取所有数据 18 print(cur.fetchall()) 19 #获取一行数据 20 print(cur.fetchone()) 21 #以绝对位置获取数据 22 cur.scroll(5,mode='absolute') 23 #以相对位置获取数据 24 cur.scroll(5,mode='relative') 25 #提交,insert、delete、update必须提交才能生效 26 conn.commit() 27 #关闭游标 28 cur.close() 29 #关闭连接 30 conn.close()
以下是一个操作mysql数据库的函数,记录下,方便以后使用时直接取用
1 import pymysql 2 3 def op_mysql(host,user,passwd,db,sql,port=3306,charset='utf8'): 4 conn = pymysql.connect( 5 host=host,user=user,passwd=passwd,port=port,db=db,charset=charset 6 ) 7 cur = conn.cursor(pymysql.cursors.DictCursor) #以字典形式获取数据 8 cur.execute(sql) 9 if sql.startswith('select'): 10 res = cur.fetchall() 11 else: 12 conn.commit() 13 res = 88 14 cur.close() 15 conn.close() 16 return res
2. 操作redis
redis是属于nosql数据库,即非关系型数据库,数据都存放于内存中,能够很快速的读写
python3操作redis数据库, 需要安装【redis】模块,使用【pip install redis】安装即可
1 import redis 2 ip = '192.168.10.19' 3 port = 6379 4 db = 15 5 passwd = '123456' 6 #连接redis 7 r = redis.Redis(host=ip,port=port,db=db,password=passwd) 8 9 # set 是新增字符串类型,若新增的数据存在,则更新值 10 r.set('name',[1,2,3,4]) 11 #可以设置key的失效时间 12 r.setex('a','111',30) 13 #批量设置值 14 r.mset(k1='v1',k2='v2') 15 16 #get查询k的值,若key不存在就返回None 17 name = r.get('name') 18 print(r.get('name')) 19 # redis里面获取到的数据都是bytes类型的,需要是用.decode方法给它转成字符串才能继续操作 20 print(name.decode()) 21 #批量获取key 22 print(r.mget('k1','k2')) 23 24 #删除某个key 25 r.delete('name') 26 # 批量删除 27 r.delete('k1', 'k2') 28 29 #操作哈希类型 30 r.hset('hname', 'key', 'value')#set 哈希类型的值 31 r.hsetnx('hname','key2','value23')#给name为hname设置key和value,和上面的不同的是key不存在的时候才会set 32 r.hmset('hname',{'k1':'v1','k2':'v2'})#批量设置哈希类型的key和value 33 r.hget('name', 'key')#获取哈希类型的值 34 print(r.hgetall('hname'))#获取这个name里所有的key和value 35 r.hdel('hname','key')#删除哈希类型的name里面指定的值 36 print(r.keys())#获取所有的key 37 38 #新建文件夹 39 r.set('user:niuhanyang','haha') #文件夹名user 40 r.hset('session:byz_sys','chendonggua','12345') #文件夹名session
以下是使用set方式的一个简单的函数,记录下,方便以后使用时直接取用
1 import redis 2 def op_redis(host,passwd,k,v=False,time=30,db=15,port=6379): 3 r = redis.Redis(host=host,password=passwd,db=db,port=port) 4 if v: 5 r.setex(k,v,time) 6 res = 88 7 else: 8 res = r.get(k) 9 if res: 10 res = res.decode() 11 else: 12 res = "" 13 return res