目录
- 前言
- 1,关于PythonStock项目
- 2,Python全栈股票系统,架构调整
- 3,启动方式使用docker-compose
- 4,做的更新改动和修改BUG
- 5,总结
前言
使用Python开发一个web股票项目。
【github项目地址】:
https://gitee.com/pythonstock
【知乎专栏地址】:
https://zhuanlan.zhihu.com/pythonstock
【docker hub地址下载】:
https://hub.docker.com/r/pythonstock/pythonstock
【相关stock资料分类】:
http://blog.csdn.net/freewebsys/article/category/7076584
主要使用开发语言是python。
使用的lib库是pandas numpy sqlalchemy akshare stockstats bokeh等。
本文的原文连接是: https://blog.csdn.net/freewebsys/article/details/108191889
1,关于PythonStock项目
项目从2017年7月17日开始创建。真是个好日子!到现在已经有看8年时间啦。
然后github项目2023-06-02 执行存档,迁移到gitee上也有了688个星星。
pythonstock开源股票系统(4):版本升级到3.0使用vue+element做前端展示,架构调整/镜像升级,BUG修复,本地演示部署启动,简介有项目地址
主要使用的库是:pandas numpy sqlalchemy akshare stockstats bokeh
2.0 主要做的是迁移了 akshare 库。3.0 主要做的是项目整合,前端使用vue开发了。
项目地址:
https://gitee.com/pythonstock/stock
2,Python全栈股票系统,架构调整
前后端拆分了,后端迁移成了使用 API 的方式返回数据。前端主要做数据展示。
前端使用vue+elementUI开发股票界面:
https://element.eleme.cn/#/zh-CN
使用vue-element-admin的模板进行项目开发:
https://panjiachen.github.io/vue-element-admin-site/zh/guide/
效果预览:
并且实现了动态表格展示和日期,股票代码查询:
工程的目录结构变成了:
把之前的python的stock代码放到了backend 文件夹里面。
前端放到 frontend 文件夹,项目的启动脚本使用 docker-compose 启动。
3,启动方式使用docker-compose
启动方式变了,都切换成了docker-compose,同时镜像切换成了daocloud.io 源。
主要是网络的问题,不使用国外的了,速度快。
使用的基础镜像:
docker.m.daocloud.io/library/mysql:8 docker.m.daocloud.io/library/python:3.11-slim-bullseye docker.m.daocloud.io/library/node:bullseye-slim
升级python到 3.11 版本,mysql到 8 的版本。
node也是新版本。
并且用到了本地build。
backend: image: pythonstock/backend-dev:latest build: context: . dockerfile: docker/DevBackendDockerfile container_name: backend frontend: image: pythonstock/frontend-dev:latest build: context: . dockerfile: docker/DevFrontendDockerfile container_name: frontend
dockerfile
# https://hub.docker.com/_/python?tab=tags&page=1&name=3.11-slim-bullseye # 用这个做为基础镜像,防止每次都进行构建。 #FROM docker.io/python:3.11-slim-bullseye FROM docker.m.daocloud.io/library/python:3.11-slim-bullseye # https://opsx.alibaba.com/mirror # 使用阿里云镜像地址。修改debian apt 更新地址,pip 地址,设置时区。 # 设置debian的镜像源 RUN echo "deb http://mirrors.aliyun.com/debian/ bullseye main non-free contrib" > /etc/apt/sources.list && \ echo "deb-src http://mirrors.aliyun.com/debian/ bullseye main non-free contrib" >> /etc/apt/sources.list && \ echo "deb http://mirrors.aliyun.com/debian-security/ bullseye-security main" >> /etc/apt/sources.list && \ echo "deb-src http://mirrors.aliyun.com/debian-security/ bullseye-security main" >> /etc/apt/sources.list && \ echo "deb http://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib" >> /etc/apt/sources.list && \ echo "deb-src http://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib" >> /etc/apt/sources.list && \ echo "deb http://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib" >> /etc/apt/sources.list && \ echo "deb-src http://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib" >> /etc/apt/sources.list && \ echo "[global]\n\ trusted-host=mirrors.aliyun.com\n\ index-url=http://mirrors.aliyun.com/pypi/simple" > /etc/pip.conf && \ ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \ echo "Asia/Shanghai" > /etc/timezone #增加语言utf-8 ENV LANG=zh_CN.UTF-8 ENV LC_CTYPE=zh_CN.UTF-8 ENV LC_ALL=C ENV PYTHONPATH=/data/stock # 增加 TensorFlow 的支持,使用最新的2.0 编写代码。目前还是使用 1.x 吧,还没有学明白。 # RUN pip3 install tensorflow==2.0.0-rc1 keras # RUN pip3 install tensorflow keras sklearn # 设置 vim 的语言配置 RUN mkdir -p /etc/vim/ && \ echo "set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936" >> /etc/vim/vimrc && \ echo "set termencoding=utf-8" >> /etc/vim/vimrc && \ echo "set encoding=utf-8" >> /etc/vim/vimrc # 安装 mysqlclient akshare (pandas ,numpy) tornado bokeh # 安装 nodejs 库 # apt-get autoremove -y 删除没有用的依赖lib。减少镜像大小。1MB 也要节省。 # apt-get --purge remove 软件包名称 , 删除已安装包(不保留配置文件)。 RUN apt-get update && apt-get install -y git pkg-config net-tools procps gcc make python3-dev default-libmysqlclient-dev libxml2-dev cron && \ pip3 install mysqlclient sqlalchemy && \ pip3 install supervisor && \ pip3 install numpy pandas && \ pip3 install akshare --upgrade && \ apt-get install -y nodejs && \ pip3 install tornado torndb && \ pip3 install bokeh stockstats scikit-learn && \ apt-get --purge remove -y gcc make python3-dev default-libmysqlclient-dev libxml2-dev && \ rm -rf /root/.cache/* && apt-get clean && apt-get autoremove -y && \ cd /usr/local/lib/python3.11/site-packages && find ./ -name *.pyc | xargs rm -f # /usr/local/lib/python3.11/site-packages/pandas/ # 1.解决 pandas 数据插入问题。直接修改数据库驱动 sqlalchemy # 修改:statement.replace("INSERT INTO","INSERT IGNORE INTO") # /usr/local/lib/python3.11/site-packages/sqlalchemy/dialects/mysql/mysqldb.py # 增加了一个 IGNORE 参数。 # 2.解决torndb在python3下面的问题: # http://blog.csdn.net/littlethunder/article/details/8917378 # 3. 解决 type 问题,使用sed 进行替换。 # File "/usr/local/lib/python3.11/site-packages/torndb.py", line 260, in
# CONVERSIONS[field_type] = [(FLAG.BINARY, str)] + CONVERSIONS[field_type] # TypeError: can only concatenate list (not "type") to list RUN echo `date +%Y-%m-%d:%H:%M:%S` >> /etc/docker.build && \ sed -i -e 's/executemany(statement/executemany(statement.replace\("INSERT INTO","INSERT IGNORE INTO")/g' \ /usr/local/lib/python3.11/site-packages/sqlalchemy/dialects/mysql/mysqldb.py && \ rm -f /etc/cron.daily/apt-compat /etc/cron.daily/dpkg /etc/cron.daily/passwd && \ sed -i -e 's/itertools\.izip/zip/g' \ /usr/local/lib/python3.11/site-packages/torndb.py && \ sed -i -e 's/\+ CONVERSIONS\[field_type\]/\+ \[CONVERSIONS\[field_type\],bytes\]/g' \ /usr/local/lib/python3.11/site-packages/torndb.py #add cron sesrvice. #每分钟,每小时1分钟,每天1点1分,每月1号执行 RUN mkdir -p /etc/cron.minutely && mkdir -p /etc/cron.hourly && mkdir -p /etc/cron.monthly && mkdir -p /var/spool/cron/crontabs && \ echo "SHELL=/bin/sh \n\ PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin \n\ # min hour day month weekday command \n\ */1 * * * * /bin/run-parts /etc/cron.minutely \n\ 10 * * * * /bin/run-parts /etc/cron.hourly \n\ 30 16 * * * /bin/run-parts /etc/cron.daily \n\ 30 17 1,10,20 * * /bin/run-parts /etc/cron.monthly \n" > /var/spool/cron/crontabs/root && \ chmod 600 /var/spool/cron/crontabs/root #增加服务端口 EXPOSE 8888 9090 ENTRYPOINT ["supervisord","-n","-c","/data/supervisor/supervisord.conf"] #使用 node:bullseye-slim 做基础镜像减少大小。 FROM docker.m.daocloud.io/library/node:bullseye-slim # https://opsx.alibaba.com/mirror # 使用阿里云镜像地址。修改debian apt 更新地址,pip 地址,设置时区。 # 设置debian的镜像源 RUN echo "deb http://mirrors.aliyun.com/debian/ bullseye main non-free contrib" > /etc/apt/sources.list && \ echo "deb-src http://mirrors.aliyun.com/debian/ bullseye main non-free contrib" >> /etc/apt/sources.list && \ echo "deb http://mirrors.aliyun.com/debian-security/ bullseye-security main" >> /etc/apt/sources.list && \ echo "deb-src http://mirrors.aliyun.com/debian-security/ bullseye-security main" >> /etc/apt/sources.list && \ echo "deb http://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib" >> /etc/apt/sources.list && \ echo "deb-src http://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib" >> /etc/apt/sources.list && \ echo "deb http://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib" >> /etc/apt/sources.list && \ echo "deb-src http://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib" >> /etc/apt/sources.list && \ echo "[global]\n\ trusted-host=mirrors.aliyun.com\n\ index-url=http://mirrors.aliyun.com/pypi/simple" > /etc/pip.conf && \ ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \ echo "Asia/Shanghai" > /etc/timezone #增加语言utf-8 ENV LANG=zh_CN.UTF-8 ENV LC_CTYPE=zh_CN.UTF-8 ENV LC_ALL=C # 增加 TensorFlow 的支持,使用最新的2.0 编写代码。目前还是使用 1.x 吧,还没有学明白。 # RUN pip3 install tensorflow==2.0.0-rc1 keras # RUN pip3 install tensorflow keras sklearn # 设置 vim 的语言配置 RUN mkdir -p /etc/vim/ && \ echo "set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936" >> /etc/vim/vimrc && \ echo "set termencoding=utf-8" >> /etc/vim/vimrc && \ echo "set encoding=utf-8" >> /etc/vim/vimrc # 安装 mysqlclient akshare (pandas ,numpy) tornado bokeh # 安装 nodejs 库 # apt-get autoremove -y 删除没有用的依赖lib。减少镜像大小。1MB 也要节省。 # apt-get --purge remove 软件包名称 , 删除已安装包(不保留配置文件)。 RUN apt-get update && apt-get install -y python3 make g++ && apt-get clean
特别需要说明的是node 前端项目也需要 python 库和make 安装软件。
4,做的更新改动和修改BUG
修改接口展示空。
修改数据库脚本。
解决预测数据买和卖的脚本。
进行缩减、计算相关添加操作。
修改启动脚本、接口路径及配置。
设置分页数据。
增加联合主键判断。
解决分页问题并执行查询语句。
增加日期查询方法。
进行数据搜索相关添加操作。
添加配置。
解决端口映射问题及修改端口测试。
修改路由地址。
拆分前后端,用 dockerfile 构建镜像并解决前端编译问题。
修改开发者模式,解决本地开发启动问题。
增加地址。
增加前端开发者模式启动。
增加每天数据跑批。
进行猜工作相关添加操作。
增加日志跑数据。
升级增加展示。
架构升级并使用 vue 的 ui 开发。
增加 install docker 说明。
添加 vue api。
提交改动记录:
https://gitee.com/pythonstock/stock/pulls/1/commits
5,总结
项目从2017年开始编写,一直还都在维护中,断断续续不,最近发现github访问经常有问题。
虽然在gitee上面有了6K的星星,也不算太高。项目就是类似做了一个简单的web工具。
和解决了相关的python环境问题,通过镜像做了优化,同时学习使用python和pandas相关类库的使用。
项目做了升级,python,mysql,node,前后端拆分了。后续出个视频展示下。
本文的原文连接是:
https://blog.csdn.net/freewebsys/article/details/81665552
博主地址是:https://blog.csdn.net/freewebsys