From 6a33d49bc6a02d8a1deaf8ac49f682c3b617aef8 Mon Sep 17 00:00:00 2001 From: mianyang <784310601@qq.com> Date: Thu, 23 Apr 2026 21:21:54 +0800 Subject: [PATCH] =?UTF-8?q?basic=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- basic.py | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 basic.py diff --git a/basic.py b/basic.py new file mode 100644 index 0000000..546f06a --- /dev/null +++ b/basic.py @@ -0,0 +1,53 @@ +import tushare as ts +from sqlalchemy import create_engine + +# 1. 配置参数 +# 在 Tushare 官网个人主页获取你的 token +TOKEN = '0fad3cf498757089e2630028455d5bbe1637475788bcdaa1f2175e93' +# 数据库连接配置 (格式: mysql+pymysql://用户名:密码@主机地址:端口/数据库名) +# DB_CONN_STR = 'mysql+pymysql://yangfan:aA%8023321088@8.159.129.156:10836/level?charset=utf8' + + +def sync_stock_basic(): + # 2. 初始化 tushare 接口 + ts.set_token(TOKEN) + pro = ts.pro_api() + + print("正在从 Tushare 获取股票列表数据...") + + # 3. 获取数据 (对应 doc_id=25 的接口参数) + # 获取当前所有正常上市交易的股票列表 + df = pro.stock_basic( + exchange='', + list_status='L', + fields='ts_code,symbol,name,area,industry,fullname,enname,cnspell,market,exchange,curr_type,list_status,list_date,delist_date,is_hs,act_name,act_ent_type' + ) + + if df.empty: + print("未获取到数据,请检查接口权限或Token设置。") + return + + # 4. 写入数据库 + try: + # 创建数据库引擎 + engine = create_engine( + "mysql+pymysql://yangfan@8.159.129.156:10836/level?charset=utf8mb4", + connect_args={ + "password": "aA%8023321088" + }, + pool_pre_ping=True + ) + + # 将数据写入数据库表 'stock_basic' + # if_exists='replace': 如果表存在则替换(适合全量更新基础信息) + # index=False: 不保存 DataFrame 的索引 + df.to_sql('stock_basic', engine, if_exists='replace', index=False) + + print(f"成功将 {len(df)} 条股票基础信息写入数据库表 [stock_basic]。") + + except Exception as e: + print(f"写入数据库失败: {e}") + + +if __name__ == "__main__": + sync_stock_basic() \ No newline at end of file