python基础笔记(五):操作excel、mysql、redis

一、操作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))

二、操作数据库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

猜你喜欢

转载自www.cnblogs.com/tata-learning/p/11774876.html