zoukankan      html  css  js  c++  java
  • python笔记六(修改excel,内置函数,接口开发,操作redis,操作数据库,读excel)

    1.修改excel

     1 # python3 -m pip instatll xlutils   #指定装到那个Python版本的(针对有多个Python)
     2 import xlrd
     3 from xlutils import copy
     4 book = xlrd.open_workbook('students.xls')
     5 #先用xlrd模块,打开一个excel
     6 new_book = copy.copy(book)
     7 #通过xlutils这个模块里面的copy方法,复制一份excel
     8 sheet = new_book.get_sheet(0)#获取sheet页
     9 list = ['编号','名字','性别','年龄','班级','地址']
    10 # col = 0
    11 # for i in list:
    12 #     sheet.write(0, col, i)
    13 #     col+=1
    14 for col,filed in enumerate(list): #和上面的四行一样的
    15     sheet.write(0, col, filed)
    16 # sheet.write(0,0,'编号')
    17 # sheet.write(0,1,'名字')
    18 new_book.save('students.xls')

    2.读excel

     1 import xlrd
     2 book = xlrd.open_workbook('students.xls')
     3 sheet = book.sheet_by_index(0)#根据下标
     4 sheet1 = book.sheet_by_name('sheet1')#根据名字
     5 print(sheet.cell(0,0).value)#指定sheet页里面的行和列
     6 print(sheet.cell(1,0).value)#指定sheet页里面的行和列
     7 print(sheet.row_values(0))#这个是获取到第几行的内容
     8 print(sheet.row_values(1))
     9 print(sheet.nrows)#获取到excel里面一共有多少行
    10 print(type(sheet.nrows))
    11 for i in range(sheet.nrows):#循环获取到每行的数据
    12     print(sheet.row_values(i))
    13 print(sheet.ncols)#总共多少列
    14 print(sheet.col_values(0))#取第几列的数据
    15 for i in range(sheet.ncols):#循环获取到每列的数据
    16     print(sheet.col_values(i))

    3.通用导出excel

     1 import pymysql,xlwt
     2 def export_excel(table_name):
     3     host,user,passwd,db = '192.168.174.128','root','123456','zuoye'
     4     coon = pymysql.connect(user = user,
     5                                host = host,
     6                                port= 3306,
     7                                passwd = passwd,
     8                                db=db,
     9                                charset='utf8'
    10                                )
    11 
    12     cur = coon.cursor()#建立游标,指定cursors类型返回的是字典
    13     sql  = 'select * from %s;'%table_name
    14     cur.execute(sql)
    15     fileds = [filed[0] for filed in cur.description]  # 这一行代码与上面三行的是一样的
    16     res = cur.fetchall()
    17     book = xlwt.Workbook()
    18     sheet = book.add_sheet('sheet')
    19     col = 0
    20     for filed in fileds: #写标头
    21         sheet.write(0,col,filed)
    22         col+=1
    23     row = 1  # 行数
    24     for date in res:  # 控制行数
    25         col = 0
    26         for filed in date:  # 写标头
    27             sheet.write(row, col, filed)
    28             col += 1
    29         row += 1  # 每次写完一行,行数加1
    30     book.save('%s.xls'%table_name)
    31 export_excel('students')

    4.内置函数:enumerate()这个函数能自动的计算下标

     1 enumerate()#这个函数能自动的计算下标
     2 fileds = ['id','name','sex','addr']
     3 for index,fiiled in enumerate(fileds):
     4     print(index,fiiled)
     5 
     6 
     7 import pymysql,xlwt
     8 def export_excel(table_name):
     9     host,user,passwd,db = '192.168.174.128','root','123456','zuoye'
    10     coon = pymysql.connect(user = user,
    11                                host = host,
    12                                port= 3306,
    13                                passwd = passwd,
    14                                db=db,
    15                                charset='utf8'
    16                                )
    17 
    18     cur = coon.cursor()#建立游标,指定cursors类型返回的是字典
    19     sql  = 'select * from %s;'%table_name
    20     cur.execute(sql)
    21     fileds = [filed[0] for filed in cur.description]  # 这一行代码与上面三行的是一样的
    22     res = cur.fetchall()
    23     book = xlwt.Workbook()
    24     sheet = book.add_sheet('sheet')
    25     for col,filed in enumerate(fileds): #写标头
    26         sheet.write(0,col,filed)
    27     row = 1#行数
    28     for date in res:#控制行数
    29         for col, filed in enumerate(date):  # 控制列
    30             sheet.write(row, col, filed)
    31         row+=1#每次写完一行,行数加1
    32     book.save('%s.xls'%table_name)
    33 export_excel('students')

    5.操作数据库,区分获取SQL的集中方法:

    res = cur.fetchall()#获取到这个sql执行的全部结果[['1','2']] [{},{}]他把数据库表里面的每一行数据放到一个list里面
    res = cur.fetchone()#获取到这个sql执行的一条结果,他返回就只是一条数据
    #如果sql语句执行的结果是多条数据的时候那么就用fetchall()
    #如果你能确定sql执行的结果就只有一条,那么就用fetchone()
    cur.fetchmany()#能传入一个个数,返回多少条数据
     1 #数据操作封装函数
     2 def my_db(sql,port=3306,charset='utf8'):
     3     import pymysql
     4     host,user,passwd,db = '192.168.174.128','root','123456','zuoye'
     5     coon = pymysql.connect(user = user,
     6                            host = host,
     7                            port= port,
     8                            passwd = passwd,
     9                            db=db,
    10                            charset=charset
    11                            )
    12 
    13     cur = coon.cursor(cursor=pymysql.cursors.DictCursor)#建立游标,指定cursors类型返回的是字典
    14     # 建立游标的时候指定游标类型,返回的就是一个字典
    15     cur.execute(sql)#执行sql
    16     if sql.strip()[:6].upper()=='SELECT':
    17         # fileds = []
    18         # for filed in cur.description:
    19         #     fileds.append(filed[0])
    20         fileds = [filed[0] for filed in cur.description]#这一行代码与上面三行的是一样的
    21         print(fileds)
    22         res = cur.fetchall()#获取到这个sql执行的全部结果[['1','2']] [{},{}]他把数据库表里面的每一行数据放到一个list里面
    23         # res = cur.fetchone()#获取到这个sql执行的一条结果,他返回就只是一条数据
    24     #如果sql语句执行的结果是多条数据的时候那么就用fetchall()
    25     #如果你能确定sql执行的结果就只有一条,那么就用fetchone()
    26         #cur.fetchmany()#能传入一个个数,返回多少条数据
    27     else:
    28         coon.commit()
    29         res = 'ok'
    30     cur.close()
    31     coon.close()
    32     return res
    33 res=my_db('select * from students limit 10;')
    34 print(res)

    6接口开发

     1 #__name__ #代表当前这个Python文件
     2 server = flask.Flask(__name__)#把当前这个Python文件,当做一个服务
     3 
     4 def my_db(sql):
     5     import pymysql
     6     coon = pymysql.connect(
     7         host='118.24.3.40', user='jxz', passwd='123456',
     8         port=3306, db='jxz', charset='utf8')
     9     cur = coon.cursor() #建立游标
    10     cur.execute(sql)#执行sql
    11     if sql.strip()[:6].upper()=='SELECT':
    12         res =  cur.fetchall()
    13     else:
    14         coon.commit()
    15         res = 'ok'
    16     cur.close()
    17     coon.close()
    18     return res
    19 
    20 
    21 
    22 @server.route('/index',methods=['get','post'])#默认methods这个参数不写,默认是get请求
    23 def index():
    24     res = {'msg':'这是我开发的第一个接口','mag_code':0}
    25     return json.dumps(res,ensure_ascii=False)
    26 
    27 
    28 @server.route('/reg',methods=['post'])#代表用post请求
    29 def reg():
    30     username= flask.request.values.get('username')
    31     pwd= flask.request.values.get('passwd')
    32     if username and pwd:
    33         sql = 'select * from my_user where username = "%s";'%username
    34         if my_db(sql):
    35             res = {'msg':'用户已存在','msg_code':2001}
    36         else:
    37             insert_sql = 'insert into my_user(username,passwd,is_admin) values ("%s","%s",0);'%(username,pwd)
    38             my_db(insert_sql)
    39             res = {'msg':'注册成功','msg_code':0}
    40     else:
    41         res = {'msg':'必填字段,请查看接口文档','msg_code':1001}#1001必填字段未填
    42     return json.dumps(res,ensure_ascii=False)
    43 
    44 
    45 server.run(port=666,debug=True,host='0.0.0.0')#设置端口号,debug=True:改了代码之后,不用重启。自己帮我们重启
    46 # host = 0.0.0.0 表示别人访问的时候,用你的ip就可以访问了

    7.操作redis

     1 # redis存到内存里面,电脑重启时就会没有,所以没办法持久化
     2 # redis本身性能是非常好的,每秒支持30w次读写
     3 import redis
     4 r = redis.Redis(host='118.24.3.40',password='HK139bc&*',db=1,port=6379)
     5 #增删改查
     6 r.set('flower','') #数据库里面新增一个值
     7 #修改也是set
     8 r.delete('flower')
     9 r.setex('py3','hahah',20)#设置key的失效时间,最后这个参数是秒
    10 test = r.get('flower')
    11 print(test.decode())
    12 print(r.get('dsdsdsd')) #get一个什么都不存在的字符串返回一个NOne
    13 s= '美女'
    14 s.encode() #把字符串转为二进制
    15 hwt = b'sdsadsad'
    16 hwt.decode()#把bytes类型转为字符串
    17 
    18 #获取值
    19 print(r.keys())#获取到所有key
    20 print(r.keys('f*'))#写参数代表查询以f开头的所有key
    21 print(r.keys('*f'))#写参数代表查询以f结尾的所有key
    22 
    23 r.set('天蝎座:admin','聪明')#只要key里面有冒号的,冒号前面的就是文件夹的名字,冒号必须是英文类型
    24 # # 多个文件夹,就是往后面直接冒号即可
    25 r.set('天蝎座:admin:admin1','聪明')
    26 
    27 for k in r.keys():#删除所有的key
    28     r.delete(k)
    29 
    30 #上面的操作都是针对string类型
    31 
    32 
    33 #下面的是哈希类型 hash  就和嵌套字典一样
    34 r.hset('stu_1','admin','胖喂喂喂二翁翁翁翁无')
    35 print(r.type('stu_1'))#查看key是什么类型
    36 #获取值
    37 print(r.hget('stu_1','admin').decode()) #指定大key和小key获取对应的数据
    38 
    39 print(r.hgetall('stu_1'))#获取里面的所有key和value
    40 res = r.hgetall('stu_1')
    41 new_res = {}
    42 for k,v in res.items():
    43     new_res[k.decode()]=v.decode()
    44 print(new_res)
    45 
    46 r.hdel('stu_1','admin')#删除指定的key
    47 r.delete('stu_1')#删除整个key
    48 print(r.ttl('stu_1'))#获取失效时间
    49 r.expire('stu_1',100)#对一个key设置失效时间
    50 
    51 
    52 #1.链接数据库,插到数据库里面所有的数据,游标类型要用pymysql.cursors.DictCursor
    53 #2.查询所有数据
    54 #3.循环list。取到username,把username当成key
    55 #4.再把这个小字典转成json,存进去就ok
    56 
    57 import pymysql
    58 import json,redis
    59 r = redis.Redis(host='118.24.3.40',password='HK139bc&*',db=1,port=6379)
    60 coon = pymysql.connect(
    61     host='118.24.3.40',user='jxz',passwd='123456',
    62     port=3306,db='jxz',charset='utf8'
    63 )
    64 cur = coon.cursor(cursor=pymysql.cursors.DictCursor) #建立游标
    65 cur.execute('select * from my_user;')
    66 res = cur.fetchall()  #获取所有返回的结果
    67 for i in res:
    68     k = i.get('username')
    69     r.hset('stu_info_y',k,json.dumps(i))
    70 cur.close()#关闭游标
    71 coon.close()#关闭连接

    .

  • 相关阅读:
    OSPF
    【今日CS 视觉论文速览】 24 Jan 2019
    【今日CS 视觉论文速览】Wed, 23 Jan 2019
    【今日CS 视觉论文速览】 21 Jan 2019
    【Processing学习笔记】安装与入门
    【今日CS 视觉论文速览】Part2, 18 Jan 2019
    【今日CS 视觉论文速览】Fri, 18 Jan 2019
    【今日CS 视觉论文速览】Thu, 17 Jan 2019
    【今日CS 视觉论文速览】Part2, 16 Jan 2019
    【今日CS 视觉论文速览】Wed, 16 Jan 2019
  • 原文地址:https://www.cnblogs.com/xmhd/p/9025309.html
Copyright © 2011-2022 走看看