一、操作excel
写Excel
写excel用到的模块是xlwt,基本操作步骤如下:
import xlwt book=xlwt.Workbook() #创建一个xls sheet=book.add_sheet('sheet1') #添加一个sheet页,起个名字是sheet1 sheet.write(0,0,'名字') #写excel,第一个数表是行,第二个数表示列 book.save('stu.xls')
如果有一堆数据需要写到Excel,如何操作呢?
import xlwt stus=[ ['id', 'name', 'sex', 'age', 'addr', 'grade', 'phone', 'gold'], [314, '矿泉水', '男', 18, '北京市昌平区', '摩羯座', '18317155663', 14405], [315, '矿泉水', '女', 27, '上海', '摩羯座', '18317155664', 100], [5985, '矿泉水', '男', 18, '北京市昌平区', '班级', '18513867663', 100] ] book=xlwt.Workbook() #创建一个xls sheet=book.add_sheet('sheet1') #添加一个sheet页,起个名字是sheet1 #方法一: # row=0 #行号 # for stu in stus: #控制循环行 # col=0 #列号 # for field in stu: #控制循环列的 # sheet.write(row,col,field) # col+=1 # row+=1 方法二:使用enumerate()函数 for row,stu in enumerate(stus): #控制行,enumerate会自动计算每一个下标 for col,field in enumerate(stu): #控制列的 sheet.write(row,col,field) book.save('stu.xls')
读Excel
读excel用到的模块是xlrd
import xlrd book = xlrd.open_workbook('stu.xls') sheet = book.sheet_by_index(0) #从第0个sheet打开 sheet=book.sheet_by_name('sheet1') #通过sheet的名字打开 result = sheet.cell(0,0).value #获取某个单元格的内容 print('某个单元格的内容',result) row=sheet.row_values(0) #获取整行的内容 print('某一行的内容',row) col = sheet.col_values(0) #获取整列的内容 print('某一列的内容',col) print(sheet.nrows) #总共多少行 print(sheet.ncols) #总共多少列 for row_num in range(sheet.nrows): #如果不想要表头,则range(1,sheet.nrows) print(sheet.row_values(row_num))
操作数据库还有一个模块是openpyxl,需要用pip安装一下才可以使用
openpyxl模块都是从1开始,该模块写和修改excel很方便,读excel还是xlrd更方便
import openpyxl #openpyxl模块都是从1开始 #写excel # book=openpyxl.Workbook() # sheet=book.active #默认的sheet # # sheet2=book.get_sheet_by_name('sheet1') #根据sheet名字打开 # # sheet.append(['id','name','phone']) #调用第一次写第一行,第二次写第二行以此类推 # # sheet.append([1,'tt',123]) # # sheet.append([2,'ee']) # 可以写部分 # sheet['a1']='id' #指定a1列是id,可以指定写某个单元格 # sheet['b1']='username' # sheet.cell(3,1,'5') #第三行第一列,写入5 # book.save('user.xlsx') # #读excel book=openpyxl.load_workbook('user.xlsx') sheet=book.active # print(sheet.cell(1,1).value) #获取第一行第一列 # print(sheet['a1'].value) # print(list(sheet.rows)) #获取所有行 l=[] for row in sheet.rows: t=[] for col in row: t.append() # print(list(sheet.columns)) #获取所有列 sheet.cell(1,1,'哈哈') #修改第一行第一列 sheet.delete_cols(1)#删除列 sheet.delete_rows(1)#删除行 book.remove('sheet1') #删除sheet页
二、操作数据库mysql
导入模块mysql
步骤:
1、建立连接
2、建立游标(建立游标时传入字典的类型pymysql.cursors.DictCursor,返回的即是字典)
3、执行sql语句
4、commit提交(如果不想每次都提交,在建立连接时加autocommit=True参数,会自动提交)
5、获取结果
6、关闭游标和连接
import pymysql ip='128.10.0.40' user='admin' pwd='123456' db='admin' port=3306 charset='utf8' #指定字符集utf8,避免有乱码 conn = pymysql.connect(host=ip,user=user,password=pwd,db=db,port=port,charset=charset,autocommit=True) #建立连接 cur=conn.cursor() #游标,返回的是二维数组 #cur=conn.cursor(pymysql.cursors.DictCursor) ##游标,游标里传入字典的类型,返回的即是字典 sql='select * from app_myuser limit 10;' ''' 增删改查 sql='create table admin_user(id int unique not null, name varchar(20) not null, phone varchar(11) unique not null);' sql='insert into admin_user (id,name,phone) values (1,"小白","19812343211");' sql='insert into admin_user (id,name,phone) values (2,"小黑","17812343211");' sql='insert into admin_user (id,name,phone) values (3,"小蓝","17812343211");' sql='update admin_user set name="春光" where id =1;' sql_del='delete from admin_user where id=3;' ''' cur.execute(sql) #执行sql语句, # conn.commit() #提交,insert,update,delete语句要加commit才可以提交到数据库,或者在连接数据库的时间加上autocommit=True参数会直接提交 # one=cur.fetchone() #获取结果,取得是一条数据 # many=cur.fetchmany(2) #获取多条数据,传入几返回几条,返回的是二维数组 all=cur.fetchall() # 获取结果,返回所有的数据,返回的是二维数组 cur.close() #关闭游标 conn.close() #关闭连接 # print(one) # print(many) print(all)
封装一个数据函数:
def op_mysql(sql): db_info = {'user': 'admin', 'password': '123456', 'host': '110.10.0.10', 'db': 'admin', 'port': 3306, 'charset': 'utf8', 'autocommit': True} conn = pymysql.connect(**db_info) # 建立连接 cur = conn.cursor(pymysql.cursors.DictCursor) # 建立游标 cur.execute(sql) # 执行sql语句,insert 、update 、delete result = cur.fetchall() #拿到结果 cur.close() conn.close() return result
三、操作redis
r=redis.Redis(host='110.10.3.40',password='HK139',port='6379',db=0,decode_responses=True) #db不指定默认是0,最后一个参数是自动转换字符串 # 字符串 # r.set('student','{"msg":"123"}',60) #增加 第三个参数是指定失效时间 # r.expire('student',60) #如果开始没有指定失效时间,可以用这个重新设置失效时间 # print(r.get('student').decode()) #获取,默认是二进制类型,加上decode会变成字符串,连接时加decode_responses=True参数,此时就可以不用decode(), # r.delete('student') #删除 # r.set('student','{"msg":"rtr"}') #修改 #哈希类型 r.hset('stud','ww''{"money":"123","addr":"beijing"}') r.hset('stud','hh''{"money":"123","addr":"beijing"}') r.hdel('stud','hh') #删除 print(r.hget('stud','ww')) print(r.hgetall('stud')) #获取所有的 # r.flushall() #清空所有数据库的内容 # r.flushdb() #清空当前数据库里面的内容 # r.exists('name') #判断key是否存在 # r.keys() #获取当前数据库所有的key # r.type('name') #获取key的类型