社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

【Python技术】量化之tushare股票列表数据入mysql

子晓聊技术 • 3 月前 • 185 次点击  

周末有同学问我 之前写的tushare例子入库,  反馈怎么没有 股票代码、股票名称、 行业等信息。
用过tushare的同学都知道,  他说的这些信息在基础信息接口。 打开tushare官方网站你会发现:
接口:stock_basic,可以通过数据工具调试和查看数据
描述:获取基础信息数据,包括股票代码、名称、上市日期、退市日期等
权限:2000积分起。此接口是基础信息,调取一次就可以拉取完,建议保存到本地存储后使用

这里有个问题
1、可能同学没采购 tushare积分,毕竟要2000积分起

既然这样,我这里写个例子,如果需要 大A 的5000多条数据,可以加我微信私信我说明情况。 我把我获取的mysql 这块数据私发, 如果不知道mysql是啥玩意的 或者不懂怎么安装mysql的就真心没必要了。 

相关文章:
【Python技术】通过股票code获取股票名称的几种技术方案
量化之tushare日线数据入库Mysql例子
【Python技术】初学者python搭建环境相关工具整理
做量化我们应该如何选择数据库
[Python技术] 量化之miniqmt下载A股数据到本地

另外有同学问我 ,tushare和miniqmt获取行情源怎么选择,为啥我推荐这2个数据源。 这里说下原因, 目前tushare和miniqmt  相对其他的门槛更低且稳定。   像akshare频繁爬取东方财富有封账号风险,我不是太推荐了。  tushare适合不用windows的同学且只做量化分析, 而如果想量化交易,建议直接miniqmt吧,一步到位。毕竟miniqmt现在门槛也低, 开户入金10w就可以搞定,没qmt资源的可以联系我。 

最后附上完整代码,需要的自取。 备注:如果发现格式有多余的特殊字符,用普通浏览器打开复制应该没问题。
import tushare as tsimport pandas as pdfrom sqlalchemy import create_engineimport scheduleimport timeimport logging# 配置日志logging.basicConfig(    level=logging.INFO,    format='%(asctime)s - %(levelname)s - %(message)s',    handlers=[logging.StreamHandler()])logger = logging.getLogger()# 初始化Tushare Prots.set_token('XXXXXX')  # 替换为实际Tokenpro = ts.pro_api()# 数据库配置DB_CONFIG = {    'user''root',    'password''12345678',    'host''localhost',    'database''db_stock',    'charset''utf8mb4',}engine = create_engine(    f"mysql://{DB_CONFIG['user']}:{DB_CONFIG['password']}@{DB_CONFIG['host']}/{DB_CONFIG['database']}?charset={DB_CONFIG['charset']}")def get_stock_basic_data():    """获取股票基础数据并进行类型处理"""    try:        df = pro.stock_basic()        return df    except Exception as e:        logger.error(f"❌ 获取股票数据失败: {str(e)}")        return pd.DataFrame()def save_to_database(df, table_name):    """保存数据到数据库,使用批处理并优化性能"""    if df.empty:        logger.warning("⚠️ 无有效数据需要保存")        return False    try:        # 分块写入防止内存溢出        df.to_sql(            table_name,            engine,            if_exists='replace',  


    
# 替换模式防止重复数据            index=False,            chunksize=1000        )        logger.info(f"💾 成功保存 {len(df)} 条数据到表 {table_name}")        return True    except Exception as e:        logger.error(f"❌ 数据库写入失败: {str(e)}")        return Falsedef full_update_stock_basic():    """全量更新股票基础数据"""    start_time = time.time()    logger.info("🔄 开始全量更新股票基础数据...")    df = get_stock_basic_data()    if not df.empty:        success = save_to_database(df, 'stock_basic')        if success:            duration = time.time() - start_time            logger.info(f"✅ 更新完成! 耗时: {duration:.2f}秒")    else:        logger.warning("⚠️ 未获取到有效数据,更新终止")# 主程序逻辑if __name__ == '__main__':    print("=" * 50)    print("📊 股票数据管理系统启动")    print("=" * 50)    # 立即执行一次全量更新    full_update_stock_basic()    # 设置每日定时任务    schedule.every().day.at("20:00").do(        lambda: logger.info("⏰ 触发定时任务..."or full_update_stock_basic()    )    print("\n🚀 定时任务守护进程已启动 (每日20:00执行)")    print("=" * 50)    print("📋 运行日志:")    try:        while True:            schedule.run_pending()            time.sleep(60)    except KeyboardInterrupt:        print("\n🔚 程序已手动终止")

如果我的分享对你投资有所帮助,不吝啬给个点赞关注呗。

如果对每日复盘感兴趣,欢迎关注我另外一个号。重在市场理解(大盘情绪、 热门概念板块、 热门个股), 技术只是辅助。


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/184863