一.模块导入
import 模块名
一个模块的实质就是把这个python文件从头到尾执行一遍
import模块的查找模块的顺序
1、从py执行程序的当前目录下找
2、从sys.path里查找
从上面2个目录都找不到,那就报错。
三种方法添加当前模块至程序可识别范围:
1、将模块文件手动拷贝到py执行程序的当前目录中
2、在执行文件中将模块的路径depend加入到sys.path
3、pycharm中将模块标记执行Sources Root操作
二.Redis操作
redis是一种非关系型数据库,是以键值对的形式存放数据,数据是存放在内存中。redis的key有两种数据类型,一是string类型,一是hash类型,他们的操作方式不相同。
1、redis的连接:
redis.Redis(host=ip,password=password,port=6379,db=10,decode_responses=True)
#连接redis,db代表数据库名字,decode_responses=True指定后,数据返回的不是以byte形式,会进行编码
2、redis新增数据
string类型的新增:
#在Redis中设置值,默认不存在则创建,存在则修改
r.set('name', 'zhangsan')
'''参数:
set(name, value, ex=None, px=None, nx=False, xx=False)
ex,过期时间(秒)
px,过期时间(毫秒)
nx,如果设置为True,则只有name不存在时,当前set操作才执行,同setnx(name, value)
xx,如果设置为True,则只有name存在时,当前set操作才执行'''
redis的value也可以接dict形式:
r.set('sessionn','sdfsdfssdf234sfdfsdsdfs',20)#过期时间20秒
r.set('info','{"name":"xxxx","password":"123456","account":11234}',20)#过期时间20秒
如果不在set的时候指定过期时间,可以用expire函数指定过期时间,需要指明对应的key
r.set('session','sdfsdfsdfss')
r.expire('session',20) #指定过期时间
hash类型的新增:
hash类型可以理解为嵌套的dict类型,string类型可以理解为非嵌套的dict类型
r.hset('sms_code','18612532945','121213') #set值
因为hash是嵌套的dict,所以第一个参数是key的值,第二个参数是value里小key的值,在hset里不可以指定过期时间,只能用expire函数指定过期时间。
3、redis新增数据删除
string类型删除:
r.delete('nhy_info') #删一个不存在的key,也不会报错
r.flushall() #清空所有数据库里面的数据
r.flushdb() #只清空当前数据库里面的数据
hash类型删除:
r.hdel('sms_code','18201034732') #删除指定的key
r.delete('sms_code') #把整个key删除掉
4、redis数据查询:
sting类型的value查询:
res = r.get('nhy_info')
hash类型的value查询:
r.hget('sms_code','18201034732') #获取值
r.hgetall('sms_code') #获取到这个key里面所有的内容
key的查询:
r.keys() #获取到所有的key
r.keys('*session*') #模糊匹配
5、redis的修改:同新增操作(默认不存在则创建,存在则修改)
6、对于redis的key属于string还是hash类型,可以用type判断:
r.type('sms_code'))
r.type('lyl_session007')
7、redis代码小示例:
#1、把现在这个redis数据库里面的数据全部整到另外一个redis里面
# a 有数据
# b 空
#要把a redis里面的数据 全部到迁移到b redis
# 1、连上2个redis
# 2、先从a redis里面获取到所有key
# 3、然后判断key是什么类型,根据类型来判断使用什么方法
# 4、从aredis里面获取到数据,set 到b redis里面
import redis
ip = '192.168.1.130'
password='123456'
r = redis.Redis(host=ip,password=password,port=6379,db=3,decode_responses=True)#连接redis
r2 = redis.Redis(host=ip,password=password,port=6378,db=2,decode_responses=True)#连接redis
all_key = r.keys()
for k in all_key:
if r.type(k) == 'string':
a_data = r.get(k)#从aredis获取到的数据
r2.set(k,a_data)
elif r.type(k) =='hash':
hash_data = r.hgetall(k) # {'key1':'v1',key2:v2}
for key,v in hash_data.items():
r2.hset(k,key,v)
三.excel操作
1、excel读取:
1 import xlrd
2 book = xlrd.open_workbook('stu3.xls')#打开一个xls文件
3 sheet = book.sheet_by_index(0)#根据sheet页的标号指定打开一个sheet页
4 sheet1 = book.sheet_by_name('sheet1')#根据指定的sheet名打开一个sheet页
5 print(sheet.cell(0,0).value)#获取指定单元格的内容
6 print(sheet.cell(1,0).value)
7 print(sheet.row_values(0)) #获取整行的数据
8 print(sheet.row_values(1))
9 print(sheet.col_values(0))#获取整列的数据
10 print(sheet.col_values(1))
11
12 print(sheet.nrows) #行数
13 print(sheet.ncols) #列数
14 for row in range(1,sheet.nrows):
15 print(sheet.row_values(row))
2、excel写入:
1 #以下是要写入表格的数据
2 stu_info = [
3 ['编号','姓名','密码','性别','地址'],
4 [1,'machunbo','sdfsd23sdfsdf2','男','北京'],
5 [2,'machunbo2','sdfsd23sdfsdf2','男','北京'],
6 [3,'machunb3','sdfsd23sdfsdf2','男','北京'],
7 [4,'machunbo4','sdfsd23sdfsdf2','男','北京'],
8 [5,'machunbo5','sdfsd23sdfsdf2','男','北京'],
9 [6,'machunbo6','sdfsd23sdfsdf2','男','北京'],
10 [7,'machunbo6','sdfsd23sdfsdf2','男','北京'],
11 [8,'machunbo6','sdfsd23sdfsdf2','男','北京'],
12 [9,'machunbo6','sdfsd23sdfsdf2','男','北京'],
13 [10,'machunbo6','sdfsd23sdfsdf2','男','北京'],
14 [11,'machunbo6','sdfsd23sdfsdf2','男','北京'],
15 ]
16
17 import xlwt
18 book = xlwt.Workbook() #新建一个excel
19 sheet = book.add_sheet('sheet1') #添加一个sheet页
20
21
22 for index,value in enumerate(stu_info):
23 # index 0
24 # value ['编号','姓名','密码','性别','地址']
25
26 #index 1
27 #value [1,'machunbo','sdfsd23sdfsdf2','男','北京']
28 for index2,v2 in enumerate(value):
29 print(index,index2,v2)
30 #0 1
31 #1 machunbo
32 #2 sdfsd23sdfsdf2
33 #4 北京
34 sheet.write(index,index2,v2)
35
36 book.save('stu3.xls') #wps可以写入 xls xlsx ,微软的office只能写入 xls
3、excel修改:
excel不能直接在原文件上修改,只能通过copy一份新的,在新的文件中写入修改的地方,最后再save进行保存完成。
1 import xlrd
2 from xlutils import copy
3
4 #1、先打开原来的excel
5 #2、复制一份
6 #3、在复制的excel上修改
7 #4、保存
8
9 book = xlrd.open_workbook('stu3.xls')
10 new_book = copy.copy(book) #
11 sheet = new_book.get_sheet(0) #修改excel的时候,得用get_sheet(),并且参数只能是sheet的index,不能通过name的形式
12 sheet.write(0,0,'id')
13 sheet.write(0,3,'password')
14 new_book.save('stu3.xls')
四.接口开发
1、定义服务:定义接口之前必须定义服务
import flask
server = flask.Flask(__name__)
#新建一个服务,把当前这个python文件当做一个服务
2、定义接口:
1 @server.route('/login',methods=['get','post'])#装饰器,修饰下面的函数为一个接口
2 def hello():
3 uname = flask.request.values.get('username')#从web请求中获取输入的参数信息
4 pd = flask.request.values.get('passwd')
5 sql = 'select * from app_myuser where username="%s"'%uname
6 res = tools.my_db(sql)
7 if res:
8 if tools.my_md5(pd) == res.get('passwd'):
9 res = {"code":0,"msg":"登录成功!"}
10 else:
11 res = {"code":1,"msg":"密码错误!"}
12 else:
13 res = {'code':2,"msg":"用户不存在"}
14 return json.dumps(res,ensure_ascii=False,indent=4)
15
16 @server.route('/reg',methods=['post'])
17 def reg():
18 uname = flask.request.values.get('username')
19 pd = flask.request.values.get('passwd')
20 cpd = flask.request.values.get('cpwd')
methods说明改接口是支持get还是post,可以都支持。
3、接口启动:
server.run(host='0.0.0.0',port=8999,debug=True)
写在文件最后,debug=true,代表调试模式,在文件修改之后可以自动生效,无需重启服务。host='0.0.0.0'表示可以接受来自任意ip的访问,如果写成127.0.0.1则表示只接受来自本机的访问。