day6-Python学习笔记(十四)接口开发

import flask,json
from tools123 import op_mysql #op_mysql()
#import tools # tools123.op_mysql 这种方式也可以调用函数
# 接口,后台服务
server = flask.Flask(__name__) #把咱们这个app这个python文件当做一个server
@server.route('/get_user',methods=['get','post'])#server.route()是装饰器,直接变成接口
def get_all_user():
sql = 'select * from bt_stu;'
res = op_mysql(
host='211.149.218.16',
user='jxz', password='123456', # port这里一定要写int类型
port=3306, db='jxz', charset='utf8', sql=sql)
response = json.dumps(res,ensure_ascii=False) #把list转成json
return response #return 的时候只能return字符串

@server.route('/add_user',methods=['post'])
def add_user():
user_id = flask.request.values.get('id') #这里的参数就是调用接口的时候传入的参数
username = flask.request.values.get('u') #
if user_id and username:
sql = "insert into stu values ('%s','%s');"%(user_id,username)
res = op_mysql(
host='211.149.218.16',
user='jxz', password='123456', # port这里一定要写int类型
port=3306, db='jxz', charset='utf8', sql=sql)
response = {'code':308,'msg':'添加成功'}
else:
response = {'code':503,'msg':'必填参数未填!'}
return json.dumps(response,ensure_ascii=False)


server.run(port=8080,debug=True)

bin/start.py
import sys,os
BASE_PATH = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0,BASE_PATH)
# print(sys.path)
# print(__file__)
from lib.main import server

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

conf/setting.py
MYSQL_HOST = '211.149.218.16'
PASSWORD ='123456'
PORT=3306
USER ='jxz'
DB ='jxz'

lib/main.py
import flask,json
from lib.tools import op_mysql
server =flask.Flask(__name__)#把咱们这个app这个py文件当做一个server

@server.route('/get_user',methods =['get','post'])
def get_all_user():
sql = 'select * from my_user;'
res = op_mysql(sql=sql)
response = json.dumps(res,ensure_ascii=False)
return response

@server.route('/add_user',methods = ['post'])
def add_user():
user_id = flask.request.values.get('id')
user_name = flask.request.values.get('u')
sql = "insert into stu values ('%s','%s');" % (user_id, user_name)
res = op_mysql(sql=sql)
response ={'code':308,'msg':'添加成功'}
return json.dumps(response,ensure_ascii=False)


@server.route('/pay_api',methods = ['post'])
def pay_api():
username =flask.request.values.get('username').strip()
money =flask.request.values.get('money').strip()
sql = 'select * from my_user;'
res = op_mysql(sql=sql)
response = json.dumps(res, ensure_ascii=False)
response_d = json.loads(response)
for i in response_d:
if username == i.get('username'):
i2 = float(i.get('money')) - float(money)
sql1 ="UPDATE my_user SET `username`='%s',`money`='%s' WHERE (`username`='%s');"%(username,i2,username)
res = op_mysql(sql1)
response = {'code': 308, 'msg': '%s用户已扣除%s金币'%(username,money)}
return json.dumps(response, ensure_ascii=False)

lib/tools.py
import pymysql,redis
from conf import setting
def op_mysql(sql):
conn = pymysql.connect(host=setting.MYSQL_HOST,user=setting.USER,
password=setting.PASSWORD,
port=setting.PORT,
charset='utf8',db=setting.DB)
cur = conn.cursor(cursor=pymysql.cursors.DictCursor)
cur.execute(sql)
sql_start = sql[:6].upper() #取sql前6个字符串,判断它是什么类型的sql语句
if sql_start=='SELECT' :
res = cur.fetchall()
else:
conn.commit()
res = 'ok'
cur.close()
conn.close()
return res

def op_redis(host,password,k,v=None,port=6379,db=0):
r = redis.Redis(host=host,password=password,port=port,db=db)
if v:
r.set(k,v)
res = 'ok'
else:
res = r.get(k)
if res: #这里是判断有没有get到数据
res = res.decode()
else:
res = None
return res

# print(__name__)
# print('哈哈哈哈,我在这里头')
# if __name__=='__main__':
# #别人导入这个python文件的时候,下面的代码不会被执行
# #自己测试的时候用
# # print(__name__) # __main__
# # print('哈哈哈哈哈哈 到底有没有执行')
# sql = 'select * from bt_stu limit 5;'
# sql2 = 'update bt_stu set class="天蝎座3" where id=503;'
# res = op_mysql(
# host='211.149.218.16',
# user='jxz',password='123456',#port这里一定要写int类型
# port=3306,db='jxz',charset='utf8',sql=sql2)
# print(res)