python|基于股票大数据分析的Python入门实战(实践记录)(持续更新)


文章目录

  • 环境
  • 第五章
    • 成功6:
    • 失败4:
      • pandas_datareader
      • tushare
      • pandas_datareader不准备解决
      • tushare解决
  • 第8章 数据库操作与绘制MACD线
  • 第11章 用BIAS范例讲述Django框架
    • 安装并创建项目
    • 运行项目

胡书敏. 基于股票大数据分析的Python入门实战(视频教学版)学习记录。
照着书籍一步步做,其中会记录一些实践中遇到的问题。
因为某些工具版本升级或者停止维护,可能会和书中内容有些许出入,因此做个记录。
环境 系统:Ubuntu 18.04.4 LTS
conda:4.10.3
python:3.8.12
pip:21.2.4
第五章 成功6:
$ conda install numpy $ conda install pandas $ conda install requests $ conda install matplotlib

$ python urllibDemo.py $ python urllibWithParam.py $ python getStockAsCsv.py $ python regexMatchDemo.py $ python regexSplitDemo.py $ python getFromSinaAPI.py

失败4: pandas_datareader
$ pip install pandas_datareader Successfully installed pandas-datareader-0.10.0 $ python getDataByPandasDatareader.py ... OSError: [Errno 101] Network is unreachable ...

$ python printDataByPandasDatareader.py ModuleNotFoundError: No module named 'pandas_datareader'

tushare
$ python getStockInfoByTS.py 本接口即将停止更新,请尽快使用Pro版接口:https://tushare.pro/document/2 ... urllib.error.URLError: $ $ $ python printStockCodeByTS.py 本接口即将停止更新,请尽快使用Pro版接口:https://tushare.pro/document/2 ... urllib.error.URLError: $ python saveStockToCsvByTS.py 本接口即将停止更新,请尽快使用Pro版接口:https://tushare.pro/document/2

pandas_datareader不准备解决
只是其中一种方式而已,不准备解决了。
tushare解决
ts失败的原因是已经升级为ts pro,需要积分,具体可参考官网。
注册+100积分,完善资料+20积分。可调用基本的接口。
查看api可以看到,调用方式已经改变了。
pro = ts.pro_api()#查询当前所有正常上市交易的股票列表data = https://www.it610.com/article/pro.stock_basic(exchange='', list_status='L', fields='ts_code,symbol,name,area,industry,list_date')

或者
data = https://www.it610.com/article/pro.query('stock_basic', exchange='', list_status='L', fields='ts_code,symbol,name,area,industry,list_date')

第8章 数据库操作与绘制MACD线 安装mysql,略。“存储数据——MySql数据库”
创建数据库
一定要指定utf8编码,否则中文会乱码
mysql> CREATE DATABASE pythonStock; mysql> use pythonStock; mysql> CREATE TABLE stockInfo (date VARCHAR(20),open FLOAT,close FLOAT,high FLOAT,low FLOAT, vol INT, stockCode VARCHAR(20)) DEFAULT CHARSET=utf8; ; mysql> DESCRIBE stockInfo; +-----------+-------------+------+-----+---------+-------+ | Field| Type| Null | Key | Default | Extra | +-----------+-------------+------+-----+---------+-------+ | date| varchar(20) | YES|| NULL|| | open| float| YES|| NULL|| | close| float| YES|| NULL|| | high| float| YES|| NULL|| | low| float| YES|| NULL|| | vol| int(11)| YES|| NULL|| | stockCode | varchar(20) | YES|| NULL|| +-----------+-------------+------+-----+---------+-------+ 7 rows in set (0.01 sec)

插入数据
mysql> INSERT INTO stockInfo -> VALUES ('20190102',15.06,15.93,16.33,14.71,75979904,'600895');

TestMySQLDB.py需要修改成如下方式才可以
#第8行 db = pymysql.connect(host="localhost",user="root",passwd="111111",db="pythonStock" ) #第13行,我的表名叫stockInfo,I大写 cursor.execute("select * from stockInfo")

从文件中加载报错
1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

默认为NULL,表示限制不能导入导出,有值的话,需要将文件放置到值目录下,
mysql> show global variables like '%secure_file_priv%'; +------------------+-----------------------+ | Variable_name| Value| +------------------+-----------------------+ | secure_file_priv | /var/lib/mysql-files/ | +------------------+-----------------------+ 1 row in set (0.00 sec)

第11章 用BIAS范例讲述Django框架 Django框架的底层实现也是基于WSGI的,由于对WSGI进行了封装,感知不到WSGI规范的存在。
安装并创建项目
$ conda install django $ python djangoDemo.py 3.2.5

$ django-admin startproject MyDjangoApp $ lsMyDjangoApp/ manage.pyMyDjangoApp $ lsMyDjangoApp/MyDjangoApp/ asgi.py__init__.pysettings.pyurls.pywsgi.py

运行项目 python manage.py migrate需要加上
$ cd MyDjangoApp $ python manage.py migrate $ python manage.py runserver localhost:8080

如果其他主机想要访问,要修改启动方式,并且,修改settings.py
$ python manage.py runserver 0:8000 或者 $ python manage.py runserver 0.0.0.0:8000

【python|基于股票大数据分析的Python入门实战(实践记录)(持续更新)】settings.py,找到ALLOWED_HOSTS,里面可以指定哪些IP可以访问,[‘xxx.xxx.xxx.xxx’ ,…, ‘xxx.xxx.xxx.xxx’],或者允许所有主机访问。
ALLOWED_HOSTS = ['*']

    推荐阅读