一.模块导入
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则表示只接受来自本机的访问。