python笔记六

Posted xmhd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python笔记六相关的知识,希望对你有一定的参考价值。

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 = bsdsadsad
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()#关闭连接

 

.





以上是关于python笔记六的主要内容,如果未能解决你的问题,请参考以下文章

Python笔记六(面向对象的三大特性)

python笔记六

python学习笔记六:字典

Python学习笔记六:文件处理

Python学习笔记六:集合

Python 学习之《Learn Python3 The Hard Way 》第六部分学习笔记