7-flask写接口
★内置函数
int('123')
float()
string()
tuple()
set()
dict(name='zdd',age=18)
type()#查看类型
len()#看长度,其实是元素的个数
id()#看内存地址
sotred()#排序
sorted([1,0,5,9,9,3,453232,568534],reverse=True)#倒叙排列
reversed()#反转
isinstance(b,dict)#判断什么类型,返回true或者false
print(all([1,2,3,4]))#判断可迭代的对象里面的值是否都为真
print(any([0,1,2,3,4]))#判断可迭代的对象里面的值是否有一个为真
print(bin(10))#十进制转二进制
print(bool('s'))#把一个对象转换成布尔类型
print(dir(1))#打印传入对象的可调用方法
print(eval('[]'))#执行python代码,只能执行简单的,定义数据类型和运算
print(exec('def a():pass'))#执行python代码
print(filter(lambda x:x>5,[12,3,12,2,1,2,35]))#把后面的迭代对象根据前面的方法筛选
print(map(lambda x:x>5,[1,2,3,4,5,6]))
print(hex(111))#数字转成16进制
print(max(111,12))#取最大值
print(oct(111))#把数字转换成8进制
★操作excel
读excel
import xlrd
book = xlrd.open_workbook('lanxia.xls')
sheet = book.sheet_by_name('sheet1')
rows = sheet.nrows#sheet页里面的行数
clos = sheet.ncols#sheet页里面的列数
print(sheet.cell(1,1).value)#通过指定行和列去获取到单元格里面的内容
row_data = sheet.row_values(1)#获取第一行的内容
for i in range(rows):
print(sheet.row_values(i))#获取第几行的数据
写excel
import xlwt
book = xlwt.Workbook()#创建一个excel
sheet = book.add_sheet('lanxia')#添加一个sheet页
title = ['姓名','班级','住址','手机号']
data = [
['孙树江','巨蟹座','中南海',110],
['贾梦缘','巨蟹座','紫禁城',119],
['老孙','天蝎座','花果山',0],
['光远','娜美','天上',120]
]
i=0#控制列
for j in title:
#j是每次循环title的内容
sheet.write(0,i,j)#0是行,不变,i是列,每次循环都要往不通的列里面写
i+=1#每次循环的时候列都加1
line=1#控制写的行
for d in data:#外层循环是控制行数的
row = 0#代表的列,列每次都变
for dd in d:#控制列的
sheet.write(line,row,dd)
row+=1#列每次都要加一
line+=1
book.save('sjj.xls')#后缀只能用xls,要不然打不开
修改excel
from xlutils.copy import copy
import xlrd
import os
#1、打一要修改的excel
#2、再打开另一个excel
#3、把第一个excel里面修改东西写到第二个里头
#4、把原来的excel删掉,新的excel名改成原来的名字
book = xlrd.open_workbook('stu.xls')
#复制一个excel
new_book = copy(book)#复制了一份原来的excel
#通过获取到新的excel里面的sheet页
sheet = new_book.get_sheet(0)#获取到第一个sheet页
sheet.write(6, 0, 'Dandan Sun')#写入excel,第一个值是行,第二个值是列
new_book.save('stu_new.xls')#保存新的excel,保存excel必须使用后缀名是.xls的,不是能是.xlsx的
os.remove('stu.xls')
os.rename('stu_new.xls','stu.xls')
★mock接口开发
mock接口就是模拟接口的意思
1、其他模块的接口没开发好的话,咱们可以写一个接口给mock
2、给别人看数据的时候
★flask接口开发
import flask
from flask import request #想获取到请求参数的话,就得用这个
server = flask.Flask(__name__) #吧这个python文件当做一个web服务
def md5_passwd(str,salt='123456'):
#satl是盐值,默认是123456
str=str+salt
import hashlib
md = hashlib.md5() # 构造一个md5对象
md.update(str.encode())
res = md.hexdigest()
return res
def conn_mysql(sql):
import pymysql
conn = pymysql.connect(host='211.149.218.16',user='jxz',password='123456',db='jxz',charset='utf8')
cur = conn.cursor(cursor=pymysql.cursors.DictCursor)
cur.execute(sql)
res = cur.fetchone()
conn.commit()
cur.close()
conn.close()
return res
@server.route('/register',methods=['get','post'])#router里面第一个参数,是接口的路径
def reg():
# username = request.values.get('username')#这里就是你调用接口的是传入的参数
# password = request.values.get('password')#这里就是你调用接口的是传入的参数
print(request.json)
username = request.json.get("username")#入参类型是json的话,那么必须得用.json方法才能获取到数据
password = request.json.get("password")
if username and password:
sql = 'select username,password from user where username="%s";'%username
res = conn_mysql(sql)#执行sql
if res:
return '{"code":300,"msg":"你注册的用户已经存在"}'
else:
password = md5_passwd(password)#调用加密的函数
sql = 'insert into user (username,password) values ("%s","%s");'%(username,password)
conn_mysql(sql)
return '{"code":200,"msg":"注册成功!"}'
else:
return '{"code":938,"msg":"必填参数未填,请看接口文档!"}'
@server.route('/login')
def login():
return '{"msg":"登录成功"}'
server.run(port=8000,debug=True,host='0.0.0.0')