Flask+Echarts+sqlite搭建股票实时行情监控

从小白出发带你领略Python爬虫之美,关注微信公众号:机智出品(jizhjchupin),免费获取源代码及实战教程

一、系统环境:

Windows7+Python3.6+Echart3

二、结果展示:

股票实时行情.gif

三、实现过程:

PART ONE:tushare数据获取sqlite存储[monitor.py]

step 1:需要的库
from sqlalchemy import create_engine
import tushare as ts
import time
import pandas as pd
step2:获取行情并存储

这里我们使用的是Tushare隔3S获取一次股票实时行情数据,并存储至sqlite。

def stoc(i):
    df = ts.get_realtime_quotes('600031') 
    data=[i]
    s1 = pd.Series(data, index=range(0,1,1))
    df['id'] = s1
    engine = create_engine('sqlite:///test.db', convert_unicode=True)
    #追加数据到现有表
    df.to_sql('tick_data',engine,if_exists='append')

i=0
while True:
    stoc(i)
    time.sleep(3)
    i=i+1
    print('insert %s datas'%i)

PART TWO:路由器[app.py]

step 1:需要的库
import sqlite3
from flask import *
import os
step 2:设置
app = Flask(__name__)
app.config['USERNAME']='finance'#账号密码
app.config['PASSWORD']='finance'
app.secret_key=os.urandom(24)
step 3:URL
@app.route('/login', methods=['GET', 'POST'])
def login():
    error = None
    if request.method == 'POST':
        if request.form['username'] != app.config['USERNAME']:
            error = 'Invalid username'
        elif request.form['password'] != app.config['PASSWORD']:
            error = 'Invalid password'
        else:
            session['logged_in'] = True
            flash('You were logged in')
            return redirect(url_for('index'))
    return render_template('login.html', error=error)

@app.route('/logout')
def logout():
    session.pop('logged_in', None)
    flash('You were logged out')
    return redirect(url_for('login'))

def get_db():
    db = sqlite3.connect('test.db')
    db.row_factory = sqlite3.Row
    return db

def query_db(query, one=False):#, args=()
    db = get_db()
    cur = db.execute(query)#, args
    db.commit()
    rv = cur.fetchall()
    db.close()
    return (rv[0] if rv else None) if one else rv

@app.route("/", methods=["GET"])
def index():
    if session.get('logged_in'):
        return render_template("index.html")
    else:
        return redirect(url_for('login'))
    
@app.route("/finance", methods=["POST"])
def finance():
    if request.method == "POST":
        res = query_db("SELECT * FROM tick_data ") 
        print(int(request.form['id']))
    return jsonify(time = [x[32] for x in res],
                   price = [x[4] for x in res]) # 返回json格式

if __name__ == "__main__":
    app.run(debug=True)

PART THREE:页面[index.html]




    
    My Finance
    
    
    
    


    

先运行monitor.py获取一些数据,再运行app.py,然后打开http://127.0.0.1:5000,就可以看到如下界面:

Flask+Echarts+sqlite搭建股票实时行情监控_第1张图片
Login.PNG
Flask+Echarts+sqlite搭建股票实时行情监控_第2张图片
My Finance.PNG

源代码链接:http://pan.baidu.com/s/1eSw53we
关注微信公众号“机智出品”,回复0825,获取密码

Flask+Echarts+sqlite搭建股票实时行情监控_第3张图片
机智出品.jpg

你可能感兴趣的:(Flask+Echarts+sqlite搭建股票实时行情监控)