3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
您好!您在代码中遇到的报错是因为拼写错误。在 JoinQuant(聚宽)底层的 SQLAlchemy 查询语法中,用于模糊匹配的方法是 like,而不是 link。
您只需要将代码中的 .link 改为 .like 即可正确执行包含“白糖”的模糊查询:
# 正确的写法:使用 like 而不是 link
option_data = query(
opt.OPT_CONTRACT_INFO
).filter(
opt.OPT_CONTRACT_INFO.underlying_name.like('%白糖%')
)
# 然后使用对应的 run_query 方法获取数据(假设 opt 是您导入的期权库)
# df = opt.run_query(option_data)
like 模糊匹配的用法说明在 filter 条件中使用 .like() 时,它的用法与 SQL 中的 LIKE 关键字完全一致,主要通过 % 和 _ 作为通配符:
% (百分号):代表任意长度的任意字符(包括零个字符)。
like('%白糖%'):表示字符串中只要包含“白糖”即可(例如:“白糖期权”、“优质白糖”、“白糖”都会被匹配)。like('白糖%'):表示以“白糖”开头。like('%白糖'):表示以“白糖”结尾。_ (下划线):代表单个任意字符。
like('白糖_'):表示以“白糖”开头,且后面只能跟一个字符(例如:“白糖A”匹配,“白糖AB”不匹配)。在聚宽的 query 过滤条件中,进行字符串包含查询请务必使用 .like('%关键字%')。修改拼写后您的代码就可以正常获取所有标的名称中包含“白糖”的期权合约记录了!