3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 JoinQuant 聚宽平台中,finance.run_query 底层使用的是 SQLAlchemy。当需要对同一个字段进行多个值的筛选(即 SQL 中的 IN 操作)时,可以使用 SQLAlchemy 提供的 .in_() 方法。
针对您的需求:
假设对应的字段名为 operate_mode(运作方式)和 underlying_asset_type(基金类别),您可以在 filter() 中使用 .in_() 方法,并将多个字段的筛选条件用逗号分隔(逗号在 filter 中代表 AND 逻辑)。
from jqdata import *
# 构建查询语句
q = query(finance.FUND_MAIN_INFO).filter(
# 基金运作方式 包含 ETF 或 LOF
finance.FUND_MAIN_INFO.operate_mode.in_(['ETF', 'LOF']),
# 基金类别 包含 股票型、混合型、基金型、贵金属
finance.FUND_MAIN_INFO.underlying_asset_type.in_(['股票型', '混合型', '基金型', '贵金属'])
).limit(100)
# 执行查询
df = finance.run_query(q)
# 打印结果
print(df)
.in_([...]):这是 SQLAlchemy 的语法,等同于 SQL 语句中的 IN ('A', 'B')。它允许您传入一个列表,只要字段的值在列表中,该条记录就会被筛选出来。filter(条件1, 条件2):在 filter 函数中,用逗号分隔的多个条件默认是 “且”(AND) 的关系。这意味着查询出的结果必须同时满足“运作方式在指定列表中”且“基金类别在指定列表中”。注:具体的字段名称(如 operate_mode 和 underlying_asset_type)请参考聚宽最新的数据字典文档,以确保字段名完全匹配。