前言
使用python开发一个股票项目。
项目地址:
https://github.com/pythonstock/stock
相关资料:
http://blog.csdn.net/freewebsys/article/category/7076584
主要使用开发语言是python。
使用的lib库是pandas,tushare,TensorFlow,tornado等。
本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/76680525 未经博主允许不得转载。
博主地址是:http://blog.csdn.net/freewebsys
1,使用tornado
因为要开发股票系统,都是使用python进行开发的。
所以也要使用一个python的web框架。选择了那么多,还是找了一个性能比好的。
毕竟做的并不是一个很admin系统的项目。django 感觉还是不适合。
扩展起来,感觉上tornado 性能会更强悍。
2,博客demo
一个非常简单的博客系统:
https://github.com/tornadoweb/tornado/tree/master/demos/blog
发现根本就不支持很久不更新的demo了。而且我的环境使用的是python3的。
tensorflow 啥的都是按照python3 的进行的。语法还是严格的。
需要稍微的修改下:
sed -i -e 's/itertools\.izip/zip/g'
/usr/local/lib/python3.5/dist-packages/torndb.py
因为python3 的lib库没有 itertools,直接用zip替换掉。
3,设置数据
设置路由和配置。
class Application(tornado.web.Application):
def __init__(self):
handlers = [#设置路由
(r"/", HomeHandler),
(r"/stock/api_data", GetStockDataHandler),
(r"/stock/data", GetStockHtmlHandler),
]
settings = dict(#配置
template_path=os.path.join(os.path.dirname(__file__), "templates"),
static_path=os.path.join(os.path.dirname(__file__), "static"),
xsrf_cookies=True,
#cookie加密
cookie_secret="027bb1b670eddf0392cdda8709268a17b58b7",
debug=True,
)
super(Application, self).__init__(handlers, **settings)
# Have one global connection to the blog DB across all handlers
self.db = torndb.Connection(
host=MYSQL_HOST, database=MYSQL_DB,
user=MYSQL_USER, password=MYSQL_PWD)
class BaseHandler(tornado.web.RequestHandler):
@property
def db(self):
return self.application.db
使用Handler类:
class HomeHandler(BaseHandler):
@gen.coroutine
def get(self):
self.render("index.html", entries="hello")
设置render。第一个参数是模板页面,第二个是数据。
在handler里面可以直接使用数据的链接
web_size = self.db.query(" SELECT count(1) as num FROM USER_INFO ")
页面中显示:
显示对象数据
{{ stockWeb.name }}
循环显示list数据
{% for column_name in stockWeb.column_names %}
<th>{{ column_name }}</th>
{% end %}
项目结构:
---web
+---static
+---templates
+---main.py
static 是静态资源目录。
templates是模板文件。配合数据显示。
启动main函数:
def main():
tornado.options.parse_command_line()
http_server = tornado.httpserver.HTTPServer(Application())
port = 9999
http_server.listen(port)
tornado.ioloop.IOLoop.current().start()
if __name__ == "__main__":
main()
4,总结
本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/76680525 未经博主允许不得转载。
博主地址是:http://blog.csdn.net/freewebsys
tornado 还是非常简单的使用的。
做web开发的时候java并不是唯一的解决。其他的像python和golang也是可以做开发的。
并且效率也挺高的,使用合适的技术解决问题就可以了。
剩下的时间下班早点回家了。
做一个股票系统都使用pandas,numpy,所以没有必要再使用其他语言开发web系统了。用python的 tornado 就可以了。