版权声明:本文为博主原创文章,如若转载请注明出处 https://blog.csdn.net/tonydz0523/article/details/82668057
这里想结合mysql 、flask、plotly做一个在网页上展示的股票k线图,而且具有查找的更能,键入股票代码出现该股票的K线图。
可以先试一下成果:https://stock-graph-app.herokuapp.com/
使用Plotly 画股票k线图
plotly有集成的k线图方法,使用起来很方便:
这里随机选取一只股票使用plotly离线方法画图并保存在本地
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
import pandas as pd
import random
import plotly.offline as po
import plotly.graph_objs as go
def get_graph():
# 创建基础类
engine = create_engine('mysql+pymysql://ffzs:666@localhost:3306/stock')
BaseModel = declarative_base()
# 获取database 的 所有table
BaseModel.metadata.reflect(engine)
tables = BaseModel.metadata.tables
# 获取所有table名称
tables_names = list(tables.keys())
con = engine.connect()
# 随机选取1个股票
stock_name = random.choice(tables_names)
# 获取股票数据
df = pd.read_sql('select * from `{}`'.format(stock_name), con=con)
trace = go.Candlestick(x=df['日期'],
open=df['开盘价'],
high=df['最高价'],
low=df['最低价'],
close=df['收盘价'])
data = [trace]
layout = {
'title': stock_name}
fig = dict(data=data, layout=layout)
po.plot(fig, filename='templates/stock.html')
get_graph()
结果如下:
使用Flask建立网站
实验阶段现在本地使用,之后会部署到docker上或者vps上。
先建立一个Flask的文件夹,结构类似这样:
在文件夹下建立stockapp,在app目录下分别创建 init.py 、run.py 、 view.py
init.py:
from stockapp.view import app
from stockapp.view import app
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0')
from flask import render_template, Flask
app = Flask(__name__)
# 创建路由
@app.route('/')
def homepage():
return render_template("stock.html") #templates文件夹下的stock.html
这是运行run.py文件:
* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: 483-266-118
在浏览器上访问 http://0.0.0.0:5000/,就会展示使用Plotly画的K线图:
下一篇实现搜索功能。。。。。。。。