新人入门,代码各种low,如果有幸被大神刷到,望留下高贵意见,不吝赐教!QQ:1712631617
问题1:如何对已存在的数据进行更新?
问题2:如何置换数据列先后顺序?
1、数据库创建
CREATE TABLE
IF
NOT EXISTS stock_info (
ts_code VARCHAR(12) COMMENT 'ts代码',
stk_code VARCHAR(6) COMMENT '股票代码',
stk_name VARCHAR(12) COMMENT '股票名称',
industry VARCHAR(24) COMMENT '所属行业',
market VARCHAR(12) COMMENT '股票市场类型【主板/中小板/创业板/科创板】',
exchange VARCHAR(12) COMMENT '交易所',
list_date date COMMENT '上市日期',
province VARCHAR(6) COMMENT '省份',
city VARCHAR(12) COMMENT '城市',
employees INT(8) COMMENT '员工人数',
main_business VARCHAR(1500) COMMENT '主营业务及产品',
PRIMARY KEY ( ts_code ),
UNIQUE INDEX ( ts_code )
) ENGINE = INNODB CHARSET = utf8mb4;
2、Tushare调用
def get_security_info():
'''
调用stock_basic接口,获取股票基本信息,字段包含:ts代码、股票代码、股票名称、行业、股票市场类型、交易所类型、上市日期
调用stock_company接口,获取公司基本信息,字段包含:ts代码、省份、城市、员工人数、主要业务及产品,SSE上交所 SZSE深交所 ,默认SSE
表格合并
'''
cursor = conn.cursor()
# 执行删除数据命令
cursor.execute('delete from Quantized_data.stock_info')
conn.commit()
print("开始获取Tushare股票基本信息!")
stock_list = pro.stock_basic(list_status='L', fields='ts_code,symbol,name,industry,market,exchange,list_date')
company_list1 = pro.stock_company(exchange='SSE', fields='ts_code,province,city,employees,main_business')
company_list2 = pro.stock_company(exchange='SZSE', fields='ts_code,province,city,employees,main_business')
company_list = pd.concat([company_list1,company_list2],axis=0)
stock_info = pd.merge(stock_list,company_list,how='left')
stock_info.columns=['ts_code', 'stk_code', 'stk_name', 'industry', 'market', 'exchange', 'list_date','province','city','employees','main_business']
stock_info.drop_duplicates()
stock_info.to_sql('stock_info',engine,if_exists='append', index=False,chunksize=10)
print("Tushare股票基本信息获取完成!")
if __name__ == "__main__":
ts.set_token('ac16b470869c5d82db5033ae9288f77b282d2b5519507d6d2c72fdd7')
pro = ts.pro_api()
conn = pymysql.connect(host="127.0.0.1", port=3306, user='root', password='123456', database='Quantized_data',charset="utf8mb4")
engine = create_engine('mysql://root:123456@127.0.0.1/Quantized_data?charset=utf8mb4')
get_security_info()