Skip to main content

A-Query Python SDK

A股20年全量数据查询服务 - Python SDK

安装

pip install aquery-sdk

或者从源码安装:

git clone <repository-url>
cd sdk
pip install -e .

快速开始

from aquery import AQueryClient

# 初始化客户端
client = AQueryClient(token="your_token")

# 查询股票基础信息
df = client.stock_basic(market="主板")
print(df.head())

# 查询多只股票日线
df = client.daily(
    ts_code=["000001.SZ", "000002.SZ"],
    start_date=20240101,
    end_date=20241231,
    fields=["trade_date", "open", "close", "vol", "pe"]
)
print(df)

# 查询某日全市场数据
df = client.daily(
    trade_date=20240320,
    fields=["ts_code", "close", "pe", "net_mf_amount"]
)
print(df.head(10))

特性

  • ✅ 统一接口: 简洁的Python API,自动转换为DataFrame
  • ✅ 多代码查询: 支持同时查询多只股票
  • ✅ 多日期查询: 支持同时查询多个日期/报告期
  • ✅ 自适应路由: daily 方法自动选择最优查询路径
  • ✅ 分页支持: 支持limit和offset分页参数

支持的API列表

方法名 说明 多代码支持 多日期支持
daily() 日线行情(自适应路由) ✅ ✅
stock_basic() 股票基础信息 ✅ -
trade_cal() 交易日历 - ✅
company_info() 公司信息 ✅ -
industry_sw() 申万行业映射 ✅ -
industry_sw_class() 申万行业分类 - -
fina_indicator() 财务指标 ✅ ✅
fina_income() 利润表 ✅ ✅
fina_balancesheet() 资产负债表 ✅ ✅
fina_cashflow() 现金流量表 ✅ ✅
fina_dividend() 分红送股 ✅ ✅

详细用法

初始化

from aquery import AQueryClient

# 方式1: 直接传入token
client = AQueryClient(token="your_token")

# 方式2: 使用环境变量(推荐)
# export AQUERY_TOKEN=your_token
client = AQueryClient()

通用查询接口

# 使用query方法进行任意接口查询
df = client.query(
    api_name="daily",
    params={
        "ts_code": ["000001.SZ", "000002.SZ"],
        "start_date": 20240101,
        "end_date": 20241231
    },
    fields=["trade_date", "close", "vol"],
    limit=1000,
    offset=0
)

日线行情 (daily)

自适应路由说明

daily 方法会根据您的入参自动选择最优的数据集进行查询:

您的入参 自动路由到 原因
ts_code + start_date/end_date A_by_code 避免扫描多个日期文件,速度最快
trade_date A_by_date 单日文件更小,查询更快
无参数 A_by_date 默认返回最新日期数据

示例

# 查询单只股票历史数据
df = client.daily(
    ts_code="000001.SZ",
    start_date=20240101,
    end_date=20241231
)

# 查询多只股票
df = client.daily(
    ts_code=["000001.SZ", "000002.SZ", "600000.SH"],
    start_date=20240101,
    end_date=20240131
)

# 查询某日全市场数据
df = client.daily(trade_date=20240320)

# 查询多个日期
df = client.daily(
    ts_code="000001.SZ",
    trade_date=[20240320, 20240321, 20240322]
)

# 查询特定字段
df = client.daily(
    ts_code="000001.SZ",
    start_date=20240101,
    fields=["trade_date", "open", "high", "low", "close", "vol", "pe"]
)

财务数据查询

# 查询单只股票财务指标
df = client.fina_indicator(
    ts_code="000001.SZ",
    end_date=20241231
)

# 查询多只股票多个报告期
df = client.fina_indicator(
    ts_code=["000001.SZ", "600000.SH"],
    end_date=[20240331, 20240630, 20240930]
)

# 查询利润表
df = client.fina_income(
    ts_code="000001.SZ",
    start_date=20240101,
    end_date=20241231
)

# 查询资产负债表
df = client.fina_balancesheet(
    ts_code="000001.SZ",
    end_date=20241231
)

# 查询现金流量表
df = client.fina_cashflow(
    ts_code="000001.SZ",
    end_date=20241231
)

# 查询分红送股
df = client.fina_dividend(ts_code="000001.SZ")

股票基础信息

# 查询所有股票
df = client.stock_basic()

# 查询特定市场
df = client.stock_basic(market="主板")

# 查询多只股票详细信息
df = client.stock_basic(ts_code=["000001.SZ", "000002.SZ"])

公司信息

# 查询单个公司详细信息
df = client.company_info(ts_code="000001.SZ")

# 查询多个公司
df = client.company_info(ts_code=["000001.SZ", "000002.SZ"])

行业分类

# 查询申万行业映射
df = client.industry_sw(ts_code="000001.SZ")

# 查询特定级别行业
df = client.industry_sw_class(level="L1")

交易日历

# 查询日历范围
df = client.trade_cal(
    start_date=20240101,
    end_date=20241231
)

# 查询特定日期是否交易
df = client.trade_cal(trade_date=[20240320, 20240321])

# 只查询交易日
df = client.trade_cal(
    start_date=20240101,
    end_date=20241231,
    is_open=1
)

获取API信息

# 获取所有支持的API列表
apis = client.list_apis()
print(apis)

# 获取指定API的字段列表
fields = client.get_fields("daily")
print(fields)

响应格式

所有查询方法都返回 pandas.DataFrame,并附加以下元数据:

df = client.daily(ts_code="000001.SZ", trade_date=20240320)

# 查看元数据
print(df.attrs["count"])      # 返回数据条数
print(df.attrs["has_more"])   # 是否有更多数据
print(df.attrs["request_id"]) # 请求ID(用于追踪)

错误处理

from aquery import AQueryClient, AQueryError

client = AQueryClient(token="your_token")

try:
    df = client.daily(ts_code="000001.SZ", trade_date=20240320)
except AQueryError as e:
    print(f"查询失败: {e}")
except Exception as e:
    print(f"未知错误: {e}")

完整示例

示例1: 条件选股

# 查询某日全市场数据,筛选PE<20且净流入>1亿的股票
df = client.daily(
    trade_date=20240320,
    fields=["ts_code", "close", "pe", "net_mf_amount", "total_mv"]
)

# 在DataFrame中过滤
selected = df[(df["pe"] < 20) & (df["net_mf_amount"] > 1e8)]
print(selected[["ts_code", "close", "pe", "net_mf_amount"]])

示例2: 获取多只股票历史数据

# 定义股票池
stocks = ["000001.SZ", "000002.SZ", "600000.SH", "600519.SH"]

# 一次查询所有股票的历史数据
df = client.daily(
    ts_code=stocks,
    start_date=20240101,
    end_date=20241231,
    fields=["ts_code", "trade_date", "close", "vol"]
)

# 按股票代码分组分析
for code, group in df.groupby("ts_code"):
    print(f"\n{code}:")
    print(f"  年初价格: {group.iloc[0]['close']}")
    print(f"  年末价格: {group.iloc[-1]['close']}")
    print(f"  年润率: {(group.iloc[-1]['close'] / group.iloc[0]['close'] - 1) * 100:.2f}%")

示例3: 财务数据分析

# 查询多只股票的财务指标
df = client.fina_indicator(
    ts_code=["000001.SZ", "600000.SH"],
    end_date=[20240331, 20240630, 20240930, 20241231],
    fields=["ts_code", "end_date", "roe", "eps", "grossprofit_margin"]
)

# 查看ROE趋势
pivot_df = df.pivot(index="end_date", columns="ts_code", values="roe")
print(pivot_df)

示例4: 分页查询大量数据

all_data = []
offset = 0
limit = 10000

while True:
    df = client.daily(
        trade_date=20240320,
        fields=["ts_code", "close", "pe"],
        limit=limit,
        offset=offset
    )
    all_data.append(df)
    
    if not df.attrs["has_more"]:
        break
    
    offset += limit
    print(f"已获取 {offset} 条数据...")

# 合并所有数据
import pandas as pd
full_df = pd.concat(all_data, ignore_index=True)
print(f"总共 {len(full_df)} 条数据")

API参考

AQueryClient

初始化参数

参数 类型 默认值 说明
token str None API认证Token,优先使用环境变量AQUERY_TOKEN

通用方法

query(api_name, params, fields, limit, offset, order_by)

便捷方法

方法 说明 主要参数
daily() 日线行情 ts_code, trade_date, start_date, end_date
stock_basic() 股票基础信息 ts_code, market, exchange
trade_cal() 交易日历 start_date, end_date, trade_date, is_open
company_info() 公司信息 ts_code
industry_sw() 申万行业映射 ts_code, industry_level
industry_sw_class() 申万行业分类 level
fina_indicator() 财务指标 ts_code, end_date, ann_date
fina_income() 利润表 ts_code, end_date, ann_date
fina_balancesheet() 资产负债表 ts_code, end_date, ann_date
fina_cashflow() 现金流量表 ts_code, end_date, ann_date
fina_dividend() 分红送股 ts_code, end_date
list_apis() 获取API列表 -
get_fields() 获取字段列表 api_name

版本历史

v1.1.0 (2026-03-21)

  • ✅ 新增多代码查询支持(ts_code支持传入列表)
  • ✅ 新增多日期查询支持(trade_date/end_date支持传入列表)
  • ✅ 移除已废弃的daily_history和daily_all方法
  • ✅ 新增company_info, fina_income, fina_balancesheet, fina_cashflow, fina_dividend方法
  • ✅ 新增分页参数支持(limit, offset)
  • ✅ 新增get_fields方法

v1.0.0 (2026-03-01)

  • ✅ 首个正式版本
  • ✅ 支持基本查询接口
  • ✅ 自动DataFrame转换

许可证

MIT License

联系方式

Metadata

Release files for aquery-sdk 1.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for aquery-sdk 1.1.0
File Size Uploaded
aquery_sdk-1.1.0.tar.gz 12.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for aquery-sdk 1.1.0
File Interpreter ABI Platform
aquery_sdk-1.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 21.9 kB

Release files / aquery_sdk-1.1.0.tar.gz

Download URL aquery_sdk-1.1.0.tar.gz
Size 12.1 kB
Tags Source
SHA-256 checksum
How to use checksums
73e739cde1477b2a52b6ec6f6fe5fbc163d9139c2ae9c3e97b210dcd3d9db760
BLAKE2b-256 checksum
How to use checksums
274bb78434e7ad213843dbb8a320da8ddac1b9a749d2a1e3797e63e0d5476ac4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.7

Release files / aquery_sdk-1.1.0-py3-none-any.whl

Download URL aquery_sdk-1.1.0-py3-none-any.whl
Size 9.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0850b34fd50ea26d3f7258c3efbd78b8f5b6d3c196db1157a3545d6b5a310edd
BLAKE2b-256 checksum
How to use checksums
6def98ae101d1fb7b4bbb1aa50e96bc1d5558e24c8e0f72c4981518c40d999e0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.7

Release history Release notifications | RSS feed

This release

1.1.0 This release

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page