python操作mysql,redis
import pymysql
ip ="127.0.0.1"#数据库地址
user = 'username'#数据库用户名
password="pwd"#数据库密码
db='db_name'#数据库
port=3306#端口
charset='utf8'#设置字符集
conn = pymysql.connect(host=ip,user=user,password=password,db=db,port=port,charset=charset,autocommit=True)#建立连接
cur = conn.cursor(pymysql.cursors.DictCursor) #游标
sql = 'select * from tb_name limit 5;'
cur.execute(sql)#执行sql语句,insert 、update 、delete
#conn.commit() #提交
all = cur.fetchall()
# one = cur.fetchone()
# many = cur.fetchmany(2)
cur.close()
conn.close()
# print(one)
# print(many)
print(all)
def op_mysql(sql,many=True):
db_info = {'user': 'username', 'password': 'pwd',
'host': '127.0.0.1', 'db': 'db_name', 'port': 3306, 'charset': 'utf8',
'autocommit': True}
conn = pymysql.connect(**db_info) # 建立连接
cur = conn.cursor(pymysql.cursors.DictCursor) # 游标
cur.execute(sql) # 执行sql语句,insert 、update 、delete
if many ==True:
result = cur.fetchall()
else:
result = cur.fetchone()
cur.close()
conn.close()
return result
==============================================================================================
import redis
#关系型数据库
#mysql oracle sqlserver、sqlite
#非关系型数据库 NoSQL
# mongodb
# redis 每秒钟达到10w次的读写,存在内存里面
r = redis.Redis(host='127.0.0.1',password='pwd',port=6379,db=0,decode_responses=True)
#字符串
r.set('key','value')
info = r.get('key')
r.expire('key',30)#设置失效时间
r.delete('key')#删除key
#哈希类型
r.hset("KEY",'key','{"age":12,"addr":"北京"}')#写入大KEY小key
r.hdel("KEY",'key')#删除大KEY小key
print(r.hget("KEY","key"))
print(r.hgetall('KEY')) #获取所有的
d = {'qxh':'sfdsdfsf','liuying':'liy001'}
r.hmset('students',d)
r.flushall() #清空所有数据库的所有内容
r.flushdb() #清空当前数据库里面的数据
r.exists('name') #判断key是否存在
r.keys() #获取当前数据库所有的key
r.type('name') #获取的key的类型
#1、从aredis里面获取所有的key,
#2、判断key的类型
#3、根据key的类型,使用set /hset
#4、set到bredis里面
import pymysql,xlwt,os #读取数据库存储到excel filepath =os.path.join(os.getcwd()+os.path.sep+'student_info.xls') print(filepath) def sel_db(tbname):#返回一个列表 里面元素是字典 db_info = { 'host':'127.0.0.1', 'user':'root', 'password':'xxxxxx', 'port':3306,#必须是int类型 'db':'test' } conn = pymysql.connect(**db_info)#连接数据库 cur = conn.cursor(pymysql.cursors.DictCursor)#输出是字典这么建游标 cur.execute('select * from %s'%tbname) return cur.fetchall() def write_excel(filename): book=xlwt.Workbook() sheet=book.add_sheet('test') for col,title in enumerate(sel_db('Student')[0]):#写表头,字典元素的key是表头 sheet.write(0,col,title) for row,item in enumerate(sel_db('Student')):#写数据,value是每行每列的数据 for col1,value in enumerate(item.values()): sheet.write(row+1,col1,value) book.save(filename) write_excel(filepath)
import redis #redis中存的都是bytes类型 redis_info={ 'host':'127.0.0.1', 'port':6379, 'db':7, 'decode_responses':True#直接bytes转成str } redis_info1={ 'host':'127.0.0.1', 'port':6379, 'db':5, 'decode_responses':True#直接bytes转成str } conn_redis = redis.Redis(**redis_info) conn_redis1 = redis.Redis(**redis_info1) #redis的类型(string) conn_redis.set('test','test')#增数据,改数据 redis_data = conn_redis.get('test')#bytes类型 # print(redis_data.decode())#转成字符串,encode()字符串转bytes conn_redis.set('test1','test1',30)#过期时间 设置30秒 # conn_redis.delete('test')#删数据 #redis的类型(hash) conn_redis.hset('stu','mm','{"age":19}') conn_redis.hset('stu','mh','{"age":29}') conn_redis.hset('stu','hh','{"age":39}') print(conn_redis.hget('stu','mm'))#拿到某一个小key的value print(conn_redis.hgetall('stu'))#拿到所有的value # conn_redis.hdel('stu','hh')#删除一个小key # conn_redis.delete('stu')#删除大key # conn_redis.expire('stu',60)#指定某个key的过期时间,只能指定大key #=========================================================== print(conn_redis.keys())#查看key print(conn_redis.type('stu'))#查看key的类型 # conn_redis.flushdb()#清空当前数据库 # conn_redis.flushall()#清空所有key 0-15 所有的 print(conn_redis.exists('test1'))#判断key是否存在 返回1,0 #===================================================== #管道 批量执行 p = conn_redis.pipeline()#建立管道 p.set('key1','value1')#要执行的操作 p.get('key1')#要执行的操作 '''..............'''#要执行的操作 p.execute()#执行 返回一个list 里面是执行的结果 #====================小练习 redis数据迁移 #从database 7 迁移到database 5 p=conn_redis1.pipeline()#用redis1的管道 for k in conn_redis.keys(): if conn_redis.type(k)=='hash': v = conn_redis.hgetall(k) for hk,hv in v.items(): p.hset(k,hk,hv) else: v = conn_redis.get(k) p.set(k,v) p.execute()