一.安装django
直接看这里
在settings.py中的apps中添加刚刚建立的app
二.建立一个数据库,名称为stock
三、修改settings.py
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'GP' ]
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'stock', 'USER': 'root', 'PASSWORD': '', 'HOST': '127.0.0.1', 'PORT': '3306', } }
这里还需要pip install mysqlclient。
四、数据表
from django.db import models # Create your models here. class company_basic(models.Model): ts_code = models.CharField(max_length=100,null=True) chairman = models.CharField(max_length=100,null=True) manager = models.CharField(max_length=100,null=True) secretary = models.CharField(max_length=100,null=True) reg_capital = models.CharField(max_length=100,null=True) setup_date = models.CharField(max_length=100,null=True) province = models.CharField(max_length=100,null=True) def __str__(self): return self.ts_code class shareholder_basic(models.Model): ts_code = models.CharField(max_length=100,null=True) ann_date = models.CharField(max_length=100,null=True) end_date = models.CharField(max_length=100,null=True) holder_name = models.CharField(max_length=100,null=True) hold_amount = models.CharField(max_length=100,null=True) hold_ratio = models.CharField(max_length=100,null=True) def __str__(self): return self.ts_code class shareholder1_basic(models.Model): ts_code = models.CharField(max_length=100,null=True) ann_date = models.CharField(max_length=100,null=True) end_date = models.CharField(max_length=100,null=True) holder_name = models.CharField(max_length=100,null=True) hold_amount = models.CharField(max_length=100,null=True) def __str__(self): return self.ts_code class K_data(models.Model): ts_code = models.CharField(max_length=100, null=True) trade_date=models.CharField(max_length=100,null=True) open = models.FloatField(max_length=100,null=True) high = models.FloatField(max_length=100,null=True) close = models.FloatField(max_length=100,null=True) low= models.FloatField(max_length=100,null=True) vol = models.FloatField(max_length=100,null=True) def __str__(self): return self.ts_code
数据库同步
python manage.py makemigrations GP python manage.py migrate
五、数据入库
from sqlalchemy import create_engine import tushare as ts import pandas as pd cn = create_engine('mysql+pymysql://root@localhost:3306/stock?charset=utf8') pro = ts.pro_api('your token') ####详细查看自己tushare的个人页面 company = pro.stock_company(exchange='SZSE', fields='ts_code,chairman,manager,secretary,reg_capital,setup_date,province') shareholder = pro.query('top10_holders', ts_code='600000.SH', start_date='20190101', end_date='20190501') shareholder1 = pro.top10_floatholders(ts_code='600000.SH', start_date='20190101', end_date='20190601') Ddata = pro.daily(ts_code='000001.SZ', start_date='20190101', end_date='20190601', fields='ts_code,trade_date,open,high,low,close,vol') company.to_sql('gp_company_basic',cn,index=False,if_exists='append') shareholder.to_sql('gp_shareholder_basic',cn,index=False,if_exists='append') shareholder1.to_sql('gp_shareholder1_basic',cn,index=False,if_exists='append') Ddata.to_sql('gp_k_data',cn,index=False,if_exists='append')
五、前端展示
1.url
项目的url
from django.urls import path,include urlpatterns = [ path('admin/', admin.site.urls), path('', include('GP.urls')), ]
App的URL
from django.conf.urls import url,include from django.contrib import admin from GP import views from django.urls import path from django.views.static import serve from . import views urlpatterns = [ path('', views.index, name='index'), path('index/', views.index, name='index'), path('company_basic/', views.company_basic, name='company_basic'), path('shareholder_basic/', views.shareholder_basic, name='shareholder_basic'), path('shareholder1_basic/', views.shareholder1_basic, name='shareholder1_basic'), path('K_data/', views.K_data, name='K_data'), ]
2.view
from django.shortcuts import render # Create your views here. from GP import models from .models import company_basic from .models import K_data def index(request): return render(request, 'stock/index.html') def company_basic(request): com_list = models.company_basic.objects.all() return render(request,'stock/company_basic.html',{'com_list':com_list}) def shareholder_basic(request): sha_list = models.shareholder_basic.objects.all() return render(request,'stock/shareholder_basic.html',{'sha_list':sha_list}) def shareholder1_basic(request): sha1_list = models.shareholder1_basic.objects.all() return render(request,'stock/shareholder1_basic.html',{'sha1_list':sha1_list}) def K_data(request): k_d = models.K_data.objects.all() return render(request,'stock/K_data.html',{'myChart':k_d})
3.添加模板
在stock\shares\GP\template\stock\下面添加模板文件。
开始老是找不到模板,后来在settings.py中添加下面一行代码:
DIRS': [os.path.join(BASE_DIR, 'GP/template/')]
终于可以了。
六、成果展示:
参考:https://blog.csdn.net/weixin_43832703/article/details/91559942