首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何从tushare获取股票历史数据写入自己的MySQL数据库

大家好,又见面了,我是你们的朋友全栈君。 如何从tushare获取股票历史数据写入自己的MySQL数据库 点击 https://tushare.pro/register?...日期信息可以通过交易日历获得: #获取20200101~20200401之间所有有交易的日期 df = pro.trade_cal(exchange='SSE', is_open='1',...,tushare 建议先建立一个专门的函数,实现一个重试机制,见下面代码: def get_daily(self, ts_code='', trade_date='', start_date='', end_date...start_date = data[0] # 设置当前日期为结束日期 end_date = time.strftime('%Y%m%d', time.localtime...) e_dt = str_date_to_num(end_date) # 每次提取日期范围5000天,因为含有非交易日,所以返回数据不会超过5000条记录

7.8K30

OushuDB入门(五)——ETL篇

例如,为了记录客户地址的变化,customer_dim维度表有一个customer_address列和一个previous_customer_address列,分别记录当前和上一个版本的地址。...DISTINCT ON ( expression [, …] )把记录根据[, …]的值进行分组,分组之后仅返回每一组的第一行。需要注意的是,如果不指定ORDER BY子句,返回的第一条的不确定的。...以业务主键(customer_number、product_code)分区,每个分区内按生效日期排序。LEAD函数在一个分区内取到当前生效日期的下一个日期,该日期即为对应版本的过期日期。...如果是当前版本,下一日期为空,则返回一个很大的时间值,大到足以满足数据仓库整个生命周期的需要,本示例设置的是2200年1月1日。 4....本示例的时间粒度为每天,所以时间戳只要保留日期部分即可,因此数据类型选为date。这两个字段的初始值是“初始加载”执行日期的前一天。当开始装载时,current_load设置为当前日期。

1.3K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    HAWQ取代传统数仓实践(四)——定期ETL(Sqoop、HAWQ)

    这种设计既可以保留所有数据变化的历史,又屏蔽了查询当前版本的复杂性。         事实表需要引用维度表的代理键,而且不一定是引用当前版本的代理键。...DISTINCT ON ( expression [, …] )把记录根据[, …]的值进行分组,分组之后仅返回每一组的第一行。需要注意的是,如果不指定ORDER BY子句,返回的第一条的不确定的。...如果是当前版本,下一日期为空,则返回一个很大的时间值,大到足以满足数据仓库整个生命周期的需要,本示例设置的是2200年1月1日。...比如,两点执行ETL过程,则零点到两点这两个小时的数据不会在本次处理。为了确定这个截至时间点,需要给时间戳设定一个上限条件,即这里的current_load字段值。...本示例的时间粒度为每天,所以时间戳只要保留日期部分即可,因此数据类型选为date。这两个字段的初始值是“初始加载”执行日期的前一天。当开始装载时,current_load设置为当前日期。

    2.2K101

    SQL 分析大盘走势

    下表(stock)记录了某指数过去一段时间的收盘价,我们要从这张表中找出收盘价持续上涨的日期。...: 将当前行的值和上一行的值作比较,我们就能知道当前行的值是增加了还是减少了,或者保持不变。...那怎么把单调递增的序列归到同一组呢?给序列中的第一个值分配唯一的序号,序列中的其它值的序号保持和第一个值的序号一致。 在 SQL 中,使用窗口函数 lag() 可以在当前行获取到上一行某个字段的值。...如果两个交易日之间的所有交易日期的价格都是单调递增的,则这是一个单调递增组合。最后,剔除那些交易日期被包含的组合。...任意取出在这个组合内的两个交易日的价格,如果这两个交易日期的价格不在这个组合的价格之内,或者交易日期在前的价格大于等于交易日期靠后的价格,则这个组合不是单调递增的。

    53220

    质量看板开发实践(三):bug柱状图

    前面2章讲了如何从jira获取数据,知道怎样获取数据,就可以绘图了 本篇记录一下bug柱状图的实现过程 对于这个bug柱状图我大致想实现以下功能: 能够按照日期查询,同时可以切换不同日期维度:按年查询、...:一个日期代表一个bug,相同日期就代表这几个bug的创建日期都是这一天,所以我们就可以直接按照日期进行汇总 python中有一个库可以很方便的统计一个列表中的元素出现的次数:collections.Counter...["bug_data"]: # 如果一个日期在bug列表中,说明这个日期有值,取bug字典中该日期的值赋给bug_num,同时date取当前日期,组合为一个字典...end_date_to_datetime是从前端读取的结束日期 dates是一个日期范围列表,它记录了从开始日期到结束日期这个范围内的每一天的日期 result是最终返回的结果,它由一个个小的字典构成...:刷新页面后触发请求 定义一个方法refresh_page() 因为日期类型那里,我给定的默认值为"day" 所以在这个方法中,给日期范围赋一个初始值,这样每次刷新页面,日期组件就能得到初始范围

    4K10

    数仓面试——日期交叉问题

    Hi, 我是小萝卜算子 一、简介 日期交叉去重问题,是一个经典sql,本文以一个电脑品牌促销的例子从不同的角度来看待解析这个问题,有更好方法的同学,欢迎私下交流......'开始日期',    `end_date` string COMMENT '结束日期') 三、表数据 brand start_date end_date lenovo 2022-02-03 2022...,如果开始日期比结束日期小或者相等,那么以步骤一获得的日期加一天作为此次促销的开始日期,反之,记当前记录的开始日期为本次促销的开始日期 3:过滤掉开始日期大于结束日期的数据,并且根据品牌分组,对每条记录的结束和开始日期求日期差...,然后打上一个flag标记,获得连续的日期,想法比较新颖 3:方法二中, hive低版本不支持使用max窗口函数,求之前记录的最大值,同学们可以变换一下思维,即可实现 4:方法二比较巧妙的利用了窗口函数...方法二中,hive低版本可以先获得前一条记录的促销结束时间,然后用max窗口函数获得此字段结束时间的最大值,然后跟当前开始日期比较 方法三split的正则表达式为什么要写成" (?!

    76320

    数据库拉链表详解_拉链表断链

    一、前言 在上一节简单介绍了拉链表,本节主要讲解如何通过binlog采集MySQL的数据并且按月分区的方式实现拉链表。 这里以上节介绍的用户表(user) 举例 二、涉及到的表 1....在这一步骤中有两个子步骤将拉链表中失效的失效日期字段改为批次日期 从拉链表原有分区中删除失效的数据 插入新的数据:这一步骤涉及到的操作类型包含insert和update 接下来会以7月11日执行的SQL...举例,详细介绍如何把binlog表的数据同步到拉链表中。...start_date, end_date from user_link_tmp; — 删除临时表中的数据truncate table user_link_tmp; — 删除6月份所有结束时间为9999...) 数据重跑 如果某个日期同步的数据出现问题需要重跑数据,则需要重跑从当日的同步SQL到当前日期所有的SQL才能保证数据准确。

    95230

    质量看板开发实践(三):bug柱状图

    前面2章讲了如何从jira获取数据,知道怎样获取数据,就可以绘图了 本篇记录一下bug柱状图的实现过程 对于这个bug柱状图我大致想实现以下功能: 能够按照日期查询,同时可以切换不同日期维度:按年查询...:一个日期代表一个bug,相同日期就代表这几个bug的创建日期都是这一天,所以我们就可以直接按照日期进行汇总 python中有一个库可以很方便的统计一个列表中的元素出现的次数:collections.Counter...["bug_data"]: # 如果一个日期在bug列表中,说明这个日期有值,取bug字典中该日期的值赋给bug_num,同时date取当前日期,组合为一个字典...end_date_to_datetime是从前端读取的结束日期 dates是一个日期范围列表,它记录了从开始日期到结束日期这个范围内的每一天的日期 result是最终返回的结果,它由一个个小的字典构成...:刷新页面后触发请求 定义一个方法refresh_page() 因为日期类型那里,我给定的默认值为"day" 所以在这个方法中,给日期范围赋一个初始值,这样每次刷新页面,日期组件就能得到初始范围

    3.2K100

    带你学MySQL系列 | 这份MySQL函数大全,真的超有用!

    interval:向前、向后偏移日期和时间; 10)last_day():提取某个月最后一天的日期; 11)datediff(end_date,start_date):计算两个时间相差的天数; 12...; "什么是单行函数:":作用于表中的每一行记录,一条记录出来一个结果; "什么是聚合函数:":作用于一行或者多行,最终返回一个结果; 2.单行函数分类 字符函数; 数学函数; 日期函数; 其他函数;...1)now():返回系统当前的日期和时间; 操作如下: 2)curdate():只返回系统当前的日期,不包含时间; 操作如下: 3)curtime():只返回系统当前的时间,不包含日期; 操作如下...(end_date,start_date):计算两个时间相差的天数; 操作如下: 12)timestampdiff(unit,start_date,end_date):计算两个时间返回的年/月/天数...由于其中有一条记录是null值,因此使用count() 函数计数的时候,会忽略掉null行。

    1.5K40

    基于Hadoop生态圈的数据仓库实践 —— ETL(二)

    为了使所有维度表具有相同的粒度,订单维度的生效日期字段只保留到日期,忽略时间。 销售订单事实表的外键列引用维度表的代理键。...本示例的时间粒度为每天,所以时间戳只要保留日期部分即可。这两个字段的初始值是“初始加载”执行的日期,本示例中为'2016-07-04'。当开始装载时,current_load设置为当前日期。...-- 因为SCD1本身就不保存历史数据,所以这里更新维度表里的所有customer_name改变的记录,而不是仅仅更新当前版本的记录 DROP TABLE IF EXISTS tmp; CREATE TABLE...上次执行定期装载的日期到当前日期之间的销售订单被装载到rds.order_dim和sales_order_fact表。...注意客户6第一个版本的到期日期和第二个版本的生效日期同为'2016-07-04',这是因为任何一个SCD的有效期是一个“左闭右开”的区间,以客户6为例,其第一个版本的有效期大于等于'2016-03-01

    2.3K20

    三一重工大数据面试SQL-部门人员数据分析

    第1问:查询时点数据,我们可以根据记录中的开始日期和结束日期与时间判断,如果时点在区间内,则代表用户在该部门; 第2问:2024年1月份A部门员工最多时有多少员工,调整表结构为进入离开部门的记录表,并进行计数...,进入部门+1,离开部门-1,然后对所有行为进行累积求和,取出出现在1月份的最大值即可; 第3问:2024年1月份A部门平均有多少员工,存在两种计算方式:1.计算出A部门1月份每天员工数,然后进行求和。...其中enter_type 1代表进入,-1代表离开,进入时间用start_date,离开时间用end_date。通过查询2遍员工部门表,并通过union all 来整合到一起。...,查看每个阶段(两次员工变化之间的日期为同一个阶段)的人数和持续天数。...使用lead函数,计算出下一次变动日期,然后使用下一次变化日期-当前日期即为当前状态持续时间。这里因为在月末的时候,人数持续一天,所以我们需要在原始记录中增加2024-02-01一条无人员变动记录。

    15110

    如何在两个日期之间获取日志属性

    如果你是指在两个日期之间获取日志(例如文本日志文件)中的记录,你可以使用 Python 的文件操作来读取日志文件,并根据每行记录中的日期属性进行筛选。...假设这里有一个文本日志文件,每行记录都包含日期时间信息和其他属性,我们可以按照以下步骤来实现:1、问题背景我有一系列日志属性,格式如下:2013-05-10T13:07:19.425602+01:00setazone1status...=Infoid=2MSG="New'RequestArrival"Reqno=103我需要获取在两个日期之间(例如 2013-05-21 13:07:19 和 2013-05-22 13:07:19)的日志属性...(log[0], '%Y-%m-%dT%H:%M:%S')​ # 检查日志日期是否在开始日期和结束日期之间 if start_date end_date:...上面这个示例中,get_logs_between_dates 函数接受一个日志文件路径、起始日期和结束日期作为参数,并返回在指定日期范围内的日志属性列表。

    10210

    数据仓库专题(9)-缓慢变化维处理技术

    一、案例描述   在一个零售业数据仓库中,事实表保存着各销售人员的销售记录,某天一个销售人员从北京分公司调到上海分公司了,那么如何来保存这个变化呢?...下面一种则是添加记录的生效日期和失效日期来标识新旧数据: Supplier_key Supplier_Code Supplier_Name Supplier_State Start_Date End_Date...表示当前版本数据,或者你也可一用一个默认的大时间 (如: 12/31/9999)来代替空值, 这样数据还能被索引识别到. 2.3....2.4 另外建表保存历史记录 即另外建一个历史表来表存变化的历史记录,而维度只保存当前数据。...能用简单的过滤条件选出维度当前的值。 2. 能较容易的关联出历史任意一时刻事实数据的值。 3.

    64640

    用户画像 | 标签数据存储之Hive真实应用

    维度表开发的过程中,经常会遇到维度缓慢变化的情况,对于缓慢变化维一般会采用:①重写维度值,对历史数据进行覆盖;②保留多条记录,通过插入维度列字段加以区分;③开发日期分区表,每日分区数据记录当日维度的属性...在Hive使用select查询时一般会扫描整个表中所有数据,将会花费很多时间扫描不是当前要查询的数据,为了扫描表中关心的一部分数据,在建表时引入了partition的概念。...而用户在登录App后,访问、收藏、下单等相关的行为记录的是账号id(即userid)相关行为数据。虽然是同一个用户,但其在登录和未登录设备时记录的行为数据之间是未打通的。...拉链表是针对缓慢变化维表的一种设计方式,记录一个事物从开始到当前状态的全部状态变化信息。 在上图中,通过拉链表记录了userid每一次关联到不同cookieid的情况。...其中start_date表示该记录的开始日期,end_date表示该记录的结束日期,当end_date为99991231时,表示该条记录当前仍然有效。

    1.1K10

    基于Hive数据仓库的标签画像实战

    维度表开发的过程中,经常会遇到维度缓慢变化的情况,对于缓慢变化维一般会采用:①重写维度值,对历史数据进行覆盖;②保留多条记录,通过插入维度列字段加以区分;③开发日期分区表,每日分区数据记录当日维度的属性...在Hive使用select查询时一般会扫描整个表中所有数据,将会花费很多时间扫描不是当前要查询的数据,为了扫描表中关心的一部分数据,在建表时引入了partition的概念。...而用户在登录App后,访问、收藏、下单等相关的行为记录的是账号id(即userid)相关行为数据。虽然是同一个用户,但其在登录和未登录设备时记录的行为数据之间是未打通的。...拉链表是针对缓慢变化维表的一种设计方式,记录一个事物从开始到当前状态的全部状态变化信息。 在上图中,通过拉链表记录了userid每一次关联到不同cookieid的情况。...其中start_date表示该记录的开始日期,end_date表示该记录的结束日期,当end_date为99991231时,表示该条记录当前仍然有效。

    99630

    Power Pivot智能日期运用——连续时间(2)

    语法 DATESBETWEEN(,Start_date>,End_date>) 位置 参数 描述 第1参数 Dates 需要计算的日期列 第2参数 Start_Date 开始时间,日期表达式...返回 表——单列时间数据的表 C. 注意事项 返回的结果必须是在参数1中的范围 如果起始日期为空值,则默认日期列中最早的一个值为起始日期;如果结束日期为空值,则默认日期列中最后一个值。 D....作用 返回指定日期之间的日期列 E....返回 表——单列时间数据的表 C. 注意事项 第3参数的日期类型,没有日。只有年季月 和DateAdd的差异在于,返回的是偏移后根据时间类型返回的整个数据,而不是指定日的偏差。...计算当前行上下文日期所属的月份的下个月的销售金额。 计算当前行上下文日期所属的年份的下一年的销售金额。 ? 请点个赞,转发分享给更多的人。

    90220

    用户画像 | 标签数据存储之Hive真实应用

    维度表开发的过程中,经常会遇到维度缓慢变化的情况,对于缓慢变化维一般会采用:①重写维度值,对历史数据进行覆盖;②保留多条记录,通过插入维度列字段加以区分;③开发日期分区表,每日分区数据记录当日维度的属性...在Hive使用select查询时一般会扫描整个表中所有数据,将会花费很多时间扫描不是当前要查询的数据,为了扫描表中关心的一部分数据,在建表时引入了partition的概念。...而用户在登录App后,访问、收藏、下单等相关的行为记录的是账号id(即userid)相关行为数据。虽然是同一个用户,但其在登录和未登录设备时记录的行为数据之间是未打通的。...拉链表是针对缓慢变化维表的一种设计方式,记录一个事物从开始到当前状态的全部状态变化信息。 在上图中,通过拉链表记录了userid每一次关联到不同cookieid的情况。...其中start_date表示该记录的开始日期,end_date表示该记录的结束日期,当end_date为99991231时,表示该条记录当前仍然有效。

    2K20

    用Python搞了个基金查询机器人,还可以拓展!

    基金数据页码 start_date - 数据开始日期 end_date - 数据结束日期 per - 每页展现数据量,最多40 根据指定参数,浏览器会返回指定参数,一段js赋值代码,包括了 基金数据...(content)、总记录条数(records)、总页数(pages)、当前页数(curpage)。...,最后我选择了akshare方式获取,设置一个定时任务,每天三点更新自己关注的基金所有数据,存储到本地,后面要查询的时候直接读取本地文件查询即可。...和 如何打造一个能自动回复的钉钉机器人,非常详细。 钉钉群机器人主要用来汇报每天自动汇报基金数据更新情况,后面还可以加基金涨跌检测情况等。...遇到问题、解决问题的过程确实花费了我很长时间,一度还让我很苦恼,但是,这个过程也让我觉得很有益,是一个不断积累、不断练习、不断巩固的过程,解决问题后更会为自己欢呼。

    1.1K20
    领券