Python使用TuShare将股票数据保存到Oracle数据
TuShare是个获取股票数据的模块包,我们进行分析,需要将股票数据保存到本地,避免每次都从网上获取,由于本机装有ORCALE,以ORACLE为例介绍如何保存股票数据到本地。
一、大致思路:我们先获取沪深的所有股票信息,保存到数据库中,主要使用的是dataframe的to_sql函数。
to_sql(self, name, con, flavor='sqlite', schema=None, if_exists='fail',
index=True, index_label=None, chunksize=None, dtype=None):
if_exists参数值有三个,fail:如果表存在返回,append:在表后面追加数据;replace:把表替换掉
二、具体实现:
1、股票价格明细表
create table IQ_STOCK
(
op_time VARCHAR2(10),
open FLOAT,
high FLOAT,
close FLOAT,
low FLOAT,
volume FLOAT,
price_change FLOAT,
p_change FLOAT,
ma5 FLOAT,
ma10 FLOAT,
ma20 FLOAT,
v_ma5 FLOAT,
v_ma10 FLOAT,
v_ma20 FLOAT,
turnover FLOAT,
stockid VARCHAR2(10),
ktype VARCHAR2(1)
)
2、股票基本信息表
create table IQ_STOCK_BASE
(
code VARCHAR2(10),
name VARCHAR2(100),
industry VARCHAR2(100),
area VARCHAR2(100),
pe FLOAT,
outstanding FLOAT,
totals FLOAT,
"totalAssets" FLOAT,
"liquidAssets" FLOAT,
"fixedAssets" FLOAT,
reserved FLOAT,
"reservedPerShare" FLOAT,
esp FLOAT,
bvps FLOAT,
pb FLOAT,
"timeToMarket" NUMBER(19),
undp FLOAT,
perundp FLOAT,
rev FLOAT,
profit FLOAT,
gpr FLOAT,
npr FLOAT,
holders NUMBER(19)
)
3、先获取股票的基本信息:
def Get_Stock_List():
##取得股票基本信息
df = ts.get_stock_basics()
#股票数据保存
engine = create_engine('oracle+cx_oracle://user:password@localhost/orcl')
cnx = engine.connect()
##先清空
strSql = 'truncate table iq_stock_base'
cnx.execute(strSql)
df.to_sql('iq_stock_base', cnx,if_exists='append',chunksize=500)
cnx.close()
return df
4、更新近30天的K线数据,此处更新的是周K线
def Update_StockData():
##开始日期 format:YYYY-MM-DD 为空时取到API所提供的最早日期数据
p_start=time.strftime('%Y-%m-%d',time.localtime(time.time()-24*60*60*30))
p_ktype='W'
#股票数据保存
engine = create_engine('oracle+cx_oracle://xulp:yiyi2009A!@localhost/orcl')
cnx = engine.connect()
#取出股票基本数据
result=pd.read_sql('select * from iq_stock_base',cnx)
for row in result['code']:
try:
##避免重复先删除
strSql = 'delete from iq_stock where stockid=\'{}\' and ktype=\'{}\' and op_time>=\'{}\''.format(row,p_ktype,p_start)
cnx.execute(strSql)
df=ts.get_hist_data(code=row,start=p_start,ktype=p_ktype)
df.index.names = ['op_time']
df['STOCKID']= row
df['ktype']= p_ktype
df.to_sql('iq_stock', cnx,if_exists='append')
print('code:{}'.format(row))
except:
print('Exception',":",row)
cnx.close()
Python使用TuShare将股票数据保存到Oracle数据的更多相关文章
- 快速将excel数据保存到Oracle数据库中【转】
我们在工作中,也许会碰到以下情况,客户或者同事发来需要调查的数据,并不是dmp文件,而是excel文件,此时通常是一张表,少量几条记录.最近我恰好碰到了这种情况,所以做了些调查,不敢藏私,拿出来跟大家 ...
- 吴裕雄--天生自然python数据清洗与数据可视化:MYSQL、MongoDB数据库连接与查询、爬取天猫连衣裙数据保存到MongoDB
本博文使用的数据库是MySQL和MongoDB数据库.安装MySQL可以参照我的这篇博文:https://www.cnblogs.com/tszr/p/12112777.html 其中操作Mysql使 ...
- 1.scrapy爬取的数据保存到es中
先建立es的mapping,也就是建立在es中建立一个空的Index,代码如下:执行后就会在es建lagou 这个index. from datetime import datetime fr ...
- 我用C#调用C编译的dll中有这样一个函数,函数大概的功能就是把数据保存到buf缓冲区中:
我用C#调用C编译的dll中有这样一个函数,函数大概的功能就是把数据保存到buf缓冲区中: C/C++ code ? 1 int retrieve(int scanno,void* buf); 在 ...
- Excel文件数据保存到SQL中
1.获取DataTable /// <summary> /// 查询Excel文件中的数据 /// </summary> /// <param name="st ...
- 将爬取的数据保存到mysql中
为了把数据保存到mysql费了很多周折,早上再来折腾,终于折腾好了 安装数据库 1.pip install pymysql(根据版本来装) 2.创建数据 打开终端 键入mysql -u root -p ...
- mysql触发器的使用 想让b字段在更新的时候把旧数据保存到a字段中
使用mysql希望数据库自动触发一些规则,进行更新数据的时候,就需要用触发器了,比如 将旧数据保存到额外字段中,如何做呢? 在abc表中 name更新的时候 我希望把name的老数据保存到 old_n ...
- 简单抓取安居客房产数据,并保存到Oracle数据库
思路和上一篇差不多,先获取网站html文件,使用BeautifulSoup进行解析,将对应属性取出,逐一处理,最后把整理出的记录保存到oracle中,持久化储存. '''Created on 2017 ...
- 为什么查询出来的数据保存到Arraylist?插入删除数据为啥用LinkedList?
引言:这是我在回答集合体系时,被问到的一个问题,也是因为没有深入学习所以回答的并不是很好,所以这两天看了一下,以下是我的一些回答与学习方法. 学习方法:我们学习,系统性的学习肯定是比零散的学习更有效的 ...
随机推荐
- [fiddler] 使用fiddler script自定义代理规则
场景 fiddler作为调试代理工具,可以捕获电脑与互联网之间所有http通讯. 通过可视化操作或命令行可以按某些规则截获特定请求并修改,但当我们需要批量对请求进行更复杂的逻辑操作时,则不是很方便. ...
- 解决vs崩溃 无法打开工程 新建工程显示未找到约束
一般是因为windows更新引起的,可以删除与.net framework有关的更新补丁如果补丁太多可以试试如下方法: 解决方法: 1.关闭VS: 2.去C:/Users/<your users ...
- Android Studio更新升级方法
自从2013 Google I/O大会之后,笔者就将android ide开发工具从eclipse迁移到Android Studio了,android studio一直在更新完善,为了与时俱进,我们当 ...
- 放弃火狐,选择chrome
最近公司笔记本电脑经常卡的不行(win10系统),先是硬盘经常占用99%-100%,改系统设置,软件优化,硬件测试...尝试了能搜索到所有办法后,还是没有解决,换成win7后感觉稍微好点了(心理作用? ...
- python面向对象一
1.1三种编程方法论 1.面向过程:把复杂的任务一步一步分解成简单的任务. 2.函数式编程:思想上接近于数学运算,根据某种方式,根据方式得出的结果. 3.面向对象编程:一种编程方式,需要使用" ...
- OOP,WEB开发实用小技巧
偶然读到一篇博客,记录一下心得.这种设计对于新手来说一般是想不到的,它充分的发挥了OOP语言的特性,让代码专用而清爽.这是不是重构的思想呢? 我们在写业务层的时候,有很多方法是重复功能的,我们就可以使 ...
- thinkphp中的查询语句
<?php namespace Admin\Controller; use Think\Controller; class MainController extends Controller { ...
- Netty源码分析之客户端启动过程
一.先来看一下客户端示例代码. public class NettyClientTest { public void connect(int port, String host) throws Exc ...
- 如何正确配置Nginx+PHP
对很多人而言,配置Nginx+PHP无外乎就是搜索一篇教程,然后拷贝粘贴.听上去似乎也没什么问题,可惜实际上网络上很多资料本身年久失修,漏洞百出,如果大家不求甚解,一味的拷贝粘贴,早晚有一天会为此付出 ...
- 利用JS判断是否手机或pad访问
<script type="text/javascript"> /* * 智能机浏览器版本信息: * */ var browser={ versions:functio ...