一、创建Server
1.Dos 命令
python -m BaseHTTPServer [port]
默认端口是8000,
2.Python 脚本启动
#coding:utf-8 ''' Created on 2018��10��29�� @author: Administrator ''' from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler import MySQLdb from sqlalchemy import create_engine import pandas as pd import json def handleReq(path): print path #http://127.0.0.1:8000/itype=90&market=0&code=000001&startNum=0&size=100&shtTQ=1&ptype=0 #解析URL带的请求参数 reqParam = {} allReq = path.split('/') if len(allReq) > 1: req = allReq[1].split('&') for strParam in req: param = strParam.split('=') if len(param) > 1: reqParam[param[0]] = param[1] gpcode = "" if reqParam.has_key("market"): strMarket = "" if reqParam["market"] == '0': strMarket = "SZ" elif reqParam["market"] == '1': strMarket = "SH" if reqParam.has_key("code"): strCode = reqParam["code"] if len(strMarket) > 0: gpcode = strMarket + strCode conn = create_engine("mysql://root:123456@172.16.8.110/quant?charset=utf8") sql = "select * from quant_stk_calc_d_fct_kdj where gscode = 'FCT_KDJ' and gpcode = '{0}' order by ymd desc limit {1},{2}".format(gpcode, reqParam["startNum"], reqParam["size"]) dfR = pd.read_sql(sql,conn) datas = [] for i in range(0,len(dfR["ymd"])): date = int(dfR["ymd"][i]) print type(date) k = round(dfR["f1"][i], 4) d = round(dfR["f2"][i], 4) j = round(dfR["f3"][i], 4) dictData = {"iDate":date,"mField":{"K":k, "D":d, "J":j}} datas.append(dictData) return datas class HTTPHandle(BaseHTTPRequestHandler): def do_GET(self): if self.path != "/favicon.ico": print "path:",self.path datas = handleReq(self.path) #处理URL请求参数,根据参数获取相应数据 jsonStr = json.dumps(datas) print jsonStr self.protocol_version = "HTTP/1.1" self.send_response(200) self.send_header("Content-type", "application/json") self.end_headers() self.wfile.write(jsonStr) def startServer(): httpServer = HTTPServer(("127.0.0.1", 8000), HTTPHandle) httpServer.serve_forever() if __name__ == '__main__': startServer()
二、浏览器访问
服务开启后,在浏览器输入网址访问服务器资源
http://127.0.0.1:8000/itype=90&market=0&code=000001&startNum=0&size=100&shtTQ=1&ptype=0
效果:
BaseHTTPServer模块说明,参见:http://blog.sina.com.cn/s/blog_9e9f16d10102x7fc.html
报错:json 报错'xxx is not JSON serializable'的处理方法,参见:https://www.cnblogs.com/SZxiaochun/p/9875050.html