Fork me on GitHub

学习笔记七 模块导入,redis和Excel操作,基本接口开发

标签(空格分隔): redis Excel 接口开发 python


在此输入正文

一.模块导入

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读取:

复制代码

#以下是要写入表格的数据
stu_info  = [
    ['编号','姓名','密码','性别','地址'],
    [1,'machunbo','sdfsd23sdfsdf2','男','北京'],
    [2,'machunbo2','sdfsd23sdfsdf2','男','北京'],
    [3,'machunb3','sdfsd23sdfsdf2','男','北京'],
    [4,'machunbo4','sdfsd23sdfsdf2','男','北京'],
    [5,'machunbo5','sdfsd23sdfsdf2','男','北京'],
    [6,'machunbo6','sdfsd23sdfsdf2','男','北京'],
    [7,'machunbo6','sdfsd23sdfsdf2','男','北京'],
    [8,'machunbo6','sdfsd23sdfsdf2','男','北京'],
    [9,'machunbo6','sdfsd23sdfsdf2','男','北京'],
    [10,'machunbo6','sdfsd23sdfsdf2','男','北京'],
    [11,'machunbo6','sdfsd23sdfsdf2','男','北京'],
]

import xlwt
book = xlwt.Workbook() #新建一个excel
sheet = book.add_sheet('sheet1') #添加一个sheet页


for index,value in enumerate(stu_info):
    #  index 0
    # value ['编号','姓名','密码','性别','地址']

    #index 1
    #value [1,'machunbo','sdfsd23sdfsdf2','男','北京']
    for index2,v2 in enumerate(value):
        print(index,index2,v2)
        #0 1
        #1 machunbo
        #2 sdfsd23sdfsdf2
        #4 北京
        sheet.write(index,index2,v2)

book.save('stu3.xls')  #wps可以写入 xls xlsx  ,微软的office只能写入  xls

3、excel修改:

excel不能直接在原文件上修改,只能通过copy一份新的,在新的文件中写入修改的地方,最后再save进行保存完成。

import xlrd
from xlutils import copy

#1、先打开原来的excel
#2、复制一份
#3、在复制的excel上修改
#4、保存

book = xlrd.open_workbook('stu3.xls')
new_book = copy.copy(book) #
sheet = new_book.get_sheet(0) #修改excel的时候,得用get_sheet(),并且参数只能是sheet的index,不能通过name的形式
sheet.write(0,0,'id')
sheet.write(0,3,'password')
new_book.save('stu3.xls')

四.接口开发

1、定义服务:定义接口之前必须定义服务

import flask
server = flask.Flask(__name__)

新建一个服务,把当前这个python文件当做一个服务
2、定义接口:

@server.route('/login',methods=['get','post'])#装饰器,修饰下面的函数为一个接口
def hello():
    uname = flask.request.values.get('username')#从web请求中获取输入的参数信息
    pd = flask.request.values.get('passwd')
    sql = 'select * from app_myuser where username="%s"'%uname
    res = tools.my_db(sql)
    if res:
        if tools.my_md5(pd) == res.get('passwd'):
            res = {"code":0,"msg":"登录成功!"}
        else:
            res = {"code":1,"msg":"密码错误!"}
    else:
        res = {'code':2,"msg":"用户不存在"}
    return json.dumps(res,ensure_ascii=False,indent=4)

@server.route('/reg',methods=['post'])
def reg():
    uname = flask.request.values.get('username')
    pd = flask.request.values.get('passwd')
    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则表示只接受来自本机的访问。

posted on 2019-04-12 09:57  anyux  阅读(427)  评论(0)    收藏  举报