Commit eb531ce4 by jscat

update

1. 添加update_log功能
parent dbbe6cf2
...@@ -2,11 +2,14 @@ import pandas as pd ...@@ -2,11 +2,14 @@ import pandas as pd
import tushare as ts import tushare as ts
import baostock as bs import baostock as bs
import pymysql import pymysql
import time
import calendar import calendar
from datetime import datetime
import titan_data_settings as settings import titan_data_settings as settings
from urllib import parse from urllib import parse
from sqlalchemy import create_engine from sqlalchemy import create_engine
from titan_table_structure import Base from titan_table_structure import Base
from dateutil.relativedelta import relativedelta
''' '''
author: jscat 2021/02/02 author: jscat 2021/02/02
...@@ -22,20 +25,25 @@ class Data: ...@@ -22,20 +25,25 @@ class Data:
def __init__(self, token): def __init__(self, token):
# 创建请求数据线程 # 创建请求数据线程
self.token = token self.token = token
self.engine = create_engine(settings.mysql_url, encoding='utf-8', echo=True) self.engine = create_engine(settings.mysql_url, encoding='utf-8', echo=False)
# truncate数据并且append
def truncate_append(self, data, table_name): def truncate_append(self, data, table_name):
"""删除mysql表所有数据,to_sql追加新数据""" """删除mysql表所有数据,to_sql追加新数据"""
conn = self.engine.connect() conn = self.engine.connect()
conn.execute('truncate ' + table_name) conn.execute('truncate ' + table_name)
print(data) print(data)
data.to_sql(table_name, self.engine, if_exists='append', index=False) data.to_sql(table_name, self.engine, if_exists='append', index=False)
self.engine.dispose()
# keep数据并且append
def keep_append(self, data, table_name): def keep_append(self, data, table_name):
"""保留mysql表所有数据,to_sql追加新数据""" """保留mysql表所有数据,to_sql追加新数据"""
data.to_sql(table_name, self.engine, if_exists='append', index=False) data.to_sql(table_name, self.engine, if_exists='append', index=False)
self.engine.dispose()
# 同步更新日志表
def update_log(self, table_name, info):
data = pd.DataFrame({'TARGET_TABLE': table_name, 'UPDATE_INFO': info, 'CREATE_DT': str(datetime.now())}, index=[0])
data.to_sql("tbl_update_log", self.engine, if_exists='append', index=False)
''' '''
start_date='20210101', end_date='20311231' start_date='20210101', end_date='20311231'
...@@ -83,6 +91,8 @@ class Data: ...@@ -83,6 +91,8 @@ class Data:
self.truncate_append(df_all, 'tbl_AShareCalendar') self.truncate_append(df_all, 'tbl_AShareCalendar')
else: else:
self.keep_append(df_all, 'tbl_AShareCalendar') self.keep_append(df_all, 'tbl_AShareCalendar')
self.update_log('tbl_AShareCalendar', "update record: "+str(start_date)+"_"+str(end_date))
self.engine.dispose();
# print('{}成功导入数据库'.format(date)) # print('{}成功导入数据库'.format(date))
# Deprecated # Deprecated
...@@ -137,6 +147,7 @@ class Data: ...@@ -137,6 +147,7 @@ class Data:
:param date: :param date:
:return:本月第一天日期和本月最后一天日期 :return:本月第一天日期和本月最后一天日期
""" """
date = str(date)
if date.count('-') != 2: if date.count('-') != 2:
raise ValueError('- is error') raise ValueError('- is error')
year, month = str(date).split('-')[0], str(date).split('-')[1] year, month = str(date).split('-')[0], str(date).split('-')[1]
...@@ -148,10 +159,12 @@ class Data: ...@@ -148,10 +159,12 @@ class Data:
if __name__=='__main__': if __name__=='__main__':
data = Data(settings.ts_token) data = Data(settings.ts_token)
Base.metadata.create_all(data.engine) Base.metadata.create_all(data.engine)
data.get_AShareCalendar("2015-01-01", "2015-12-31", 0) start = "2019-02-01"
data.get_AShareCalendar("2016-01-01", "2016-12-31", 0) for i in range(11+2):
data.get_AShareCalendar("2017-01-01", "2017-12-31", 0) date = pd.to_datetime(start) + relativedelta(months=+i) # 当前日期往后推i个月
data.get_AShareCalendar("2018-01-01", "2018-12-31", 0) date_str = date.strftime("%Y-%m-%d")
data.get_AShareCalendar("2019-01-01", "2019-12-31", 0) start_date, end_date = data.get_current_month_start_and_end(date)
data.get_AShareCalendar("2020-01-01", "2020-12-31", 0) print(start_date, end_date)
data.get_AShareCalendar(start_date=start_date, end_date=end_date, type=1)
time.sleep(10)
...@@ -9,7 +9,7 @@ from sqlalchemy import Column, Integer, String ...@@ -9,7 +9,7 @@ from sqlalchemy import Column, Integer, String
import titan_data_settings as settings import titan_data_settings as settings
# 创建连接 # 创建连接
engine = create_engine(settings.mysql_url, encoding='utf-8', echo=True) engine = create_engine(settings.mysql_url, encoding='utf-8', echo=False)
# 生成orm基类 # 生成orm基类
Base = declarative_base() Base = declarative_base()
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论