python学习 网络编程(文件上传下载) -- redis操作----接口开发

import requests
#基于urllib封装
# url = 'http://aliuwmp3.changba.com/userdata/userwork/1128447787.mp3'
# d = {'stu_name':'矿泉水'}
# r = requests.get(url) # get 请求
# print('json',r.json()) #返回一个字典
# print('text',r.text) #返回一个字符串
# print('content',r.content) #返回一个bytes二进制结果 主要用来下载
# fw = open('ldh.mp3','wb')
# fw.write(r.content)
# fw.close()

#post请求
# url = 'http://api.nnzhp.cn/api/user/login'
# data = {'username':'niuhanyang','passwd':'aA123456'}
# r = requests.post(url,data)
# print(r.text)

#文件上传
# http://q4.qlogo.cn/g?b=qq&nk=921375025&s=140 获取qq头像
#http://api.nnzhp.cn/api/file/file_upload 上传路径
# url = 'http://api.nnzhp.cn/api/file/file_upload'
# r = requests.post(url,files={'file':open('ldh.mp3','rb')})
# print(r.text)

# r = requests.session()
# # r.get()
# result = r.post('http://api.nnzhp.cn/api/user/login',data={'username':'niuhanyang','passwd':'aA123456'})
# result = r.post('http://api.nnzhp.cn/api/user/login',params={'username':'niuhanyang','passwd':'aA123456'})

# print(result.text)



redis操作

# redis是一个数据库 数据存在内存里面  每秒支持10w次读写  性能高
import redis
r = redis.Redis(host='118.24.3.40',password='HK139bc&*',db=0,decode_responses=True)
# r.set('user','小白')新增
# print(r.get('name').decode()) 查询


# string 类型数据
# r.delete('key')#删除
# r.set('session','jkjkjkljkl',60)#设置session失效时间
# r.flushdb() #清除当前redis数据库中的key
# r.flushall() #清除所有数据库中的所有的key
# r.keys() #获取当前数据库里面所有的key
# r.keys('xx*') 获取以xx开头的所有的key
# r.exists('key') #判断这个key是否存在 存在返回1 不存在返回0

#hash类型数据
# r.hset('cnz_l','ldh','12345')
# r.hset('cnz_l','ldh2','12345') #插入修改hash类型数据
# print(r.hget('cnz_l','ldh')) #获取hash数据
# r.hdel('cnz_l','ldh') #删除hash中的某个key
# r.hgetall('cnz_l') #获取hash中所有的key 和value
# r.hmset('cnz_l',{'key':'val','key1':'val1'}) #批量set数据
# r.type('key') #查看数据类型

redis迁移
import redis

a = redis.Redis(host='118.24.3.40',password='HK139bc&*',
db=15,decode_responses=True) #0-16
b = redis.Redis(host='118.24.3.40',password='HK139bc&*',
db=10,decode_responses=True) #0-16

for k in a.keys():
if a.type(k) == 'string':
value = a.get(k)
b.set(k,value)
elif a.type(k) == 'hash':
all_data = a.hgetall(k)
b.hmset(k,all_data)
else:
print('其他类型不支持!')

接口开发

import flask
import json

#1、mock接口
#2、给别人提供数据

#flask web开发框架

server = flask.Flask(__name__)

import pymysql

def op_mysql(sql,many_tag=False):
conn = pymysql.connect(host='118.24.3.40',user='jxz',password='123456',
db='jxz',port=3306,charset='utf8',
autocommit=True)
cur = conn.cursor(pymysql.cursors.DictCursor)
cur.execute(sql)
if many_tag:
result = cur.fetchall() # [{"id":1,"name":"xxx"},{"id":2,"name":"xxx"}]
else:
result = cur.fetchone()
cur.close()
conn.close()
return result


@server.route('/index')
def login():
d = {"code":0,"msg":"登录成功 niuhanyangq111!"}
return json.dumps(d,ensure_ascii=False)


@server.route('/get_data')
def table_data():
table_list = ['app_myuser','app_product','app_student']
table_name = flask.request.args.get('table_name')
limit = flask.request.args.get('limit',10)
if table_name:
if table_name in table_list:
sql='select * from %s limit %s;'%(table_name,limit)
print(sql)
data = op_mysql(sql,True)
else:
data = {"code": -2, 'msg': "你没有权限查看这个表里面的数据!"}

else:
data = {"code":-1,'msg':"必填参数未填,请查看接口文档"}

return json.dumps(data,ensure_ascii=False)


@server.route('/post_data',methods=['post'])
def post():
username = flask.request.args.get('username')#参数在url里面的话,用它
username2 = flask.request.values.get('username2')#参数在body里面,用它
file = flask.request.files.get('f')#上传文件
cookies = flask.request.cookies.get('f')#cookie
headers = flask.request.headers.get('f')#headers
# headers = flask.request.json.get('username')#json格式的
file.save(file.filename)
return 'abc'




server.run(host='0.0.0.0',port=8989,debug=True)




#app_user,app_product,app_student

猜你喜欢

转载自www.cnblogs.com/huaixiaohai/p/11129499.html
今日推荐