单只股票 · 历史K线数据 2026-10-02

简介 —— 这段 Python 脚本使用 baostock 接口,查询贵州茅台(sh.600519)在 2026-08-01 至 2026-09-01 期间的日线 K 线数据。代码涵盖了登录、查询历史行情、遍历结果集、构建 DataFrame、导出 CSV、登出等完整流程,是 A 股量化数据获取的典型示例。

1. 导入所需库

两个核心库:Baostock 数据接口与 Pandas 数据处理。

import baostock as bs import pandas as pd

2. 登陆 Baostock 系统

说明 — 使用 Baostock 任何接口前必须先 login(),返回对象包含 error_code 与 error_msg。
#### 登陆系统 #### lg = bs.login() # 显示登陆返回信息 print('login respond error_code:' + lg.error_code) print('login respond error_msg:' + lg.error_msg)

3. 获取历史 K 线数据

指标参数说明 — “分钟线”与“日线”参数不同;“分钟线”不包含指数。
#### 获取沪深A股历史K线数据 #### # 详细指标参数,参见“历史行情指标参数”章节;“分钟线”参数与“日线”参数不同。“分钟线”不包含指数。 # 分钟线指标:date,time,code,open,high,low,close,volume,amount,adjustflag # 周月线指标:date,code,open,high,low,close,volume,amount,adjustflag,turn,pctChg rs = bs.query_history_k_data_plus("sh.600519", "date,code,open,high,low,close,preclose,volume,amount,adjustflag,turn,tradestatus,pctChg,isST", start_date='2026-08-01', end_date='2026-09-01', frequency="d", adjustflag="3") print('query_history_k_data_plus respond error_code:' + rs.error_code) print('query_history_k_data_plus respond error_msg:' + rs.error_msg)

4. 遍历结果集并构建 DataFrame

使用 while 循环配合 rs.next() 逐行读取,rs.get_row_data() 获取当前行数据。
#### 打印结果集 #### data_list = [] while (rs.error_code == '0') & rs.next(): # 获取一条记录,将记录合并在一起 data_list.append(rs.get_row_data()) result = pd.DataFrame(data_list, columns=rs.fields)

5. 保存 CSV & 打印结果

#### 结果集输出到csv文件 #### result.to_csv("history_A_stock_k_data.csv", index=False) print(result)
提示 — index=False 避免将 DataFrame 索引写入 CSV,保持文件整洁。

6. 登出系统

#### 登出系统 #### bs.logout()

良好的编程习惯:使用完毕后主动登出,释放连接资源。

完整代码

import baostock as bs import pandas as pd #### 登陆系统 #### lg = bs.login() # 显示登陆返回信息 print('login respond error_code:' + lg.error_code) print('login respond error_msg:' + lg.error_msg) #### 获取沪深A股历史K线数据 #### # 详细指标参数,参见“历史行情指标参数”章节;“分钟线”参数与“日线”参数不同。“分钟线”不包含指数。 # 分钟线指标:date,time,code,open,high,low,close,volume,amount,adjustflag # 周月线指标:date,code,open,high,low,close,volume,amount,adjustflag,turn,pctChg rs = bs.query_history_k_data_plus("sh.600519", "date,code,open,high,low,close,preclose,volume,amount,adjustflag,turn,tradestatus,pctChg,isST", start_date='2026-08-01', end_date='2026-09-01', frequency="d", adjustflag="3") print('query_history_k_data_plus respond error_code:' + rs.error_code) print('query_history_k_data_plus respond error_msg:' + rs.error_msg) #### 打印结果集 #### data_list = [] while (rs.error_code == '0') & rs.next(): # 获取一条记录,将记录合并在一起 data_list.append(rs.get_row_data()) result = pd.DataFrame(data_list, columns=rs.fields) #### 结果集输出到csv文件 #### result.to_csv("history_A_stock_k_data.csv", index=False) print(result) #### 登出系统 #### bs.logout()

关键点总结

bs.login() 必须先登录
sh.600519 贵州茅台
query_history_k_data_plus() 查询K线
frequency="d" 日线
保存为 history_A_stock_k_data.csv
bs.logout() 释放资源