You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Boto3的get_partitions接口时,Expression参数无法匹配下划线_

Boto3 get_partitions 下划线匹配问题解决方案
  • 处理Python与服务端的双重转义:下划线在LIKE表达式中是匹配单个任意字符的通配符,同时Python字符串会自动转义反斜杠,因此需要在表达式中写入双反斜杠,确保服务端收到单个反斜杠来转义下划线。示例代码:
response = client.get_partitions(
    Expression="partition_name LIKE '%\\\\_20231202%-%'",
    # 其他必要参数...
)

Python会将\\\\解析为\\,服务端接收到后会把\\_识别为字面量下划线。

  • 用ESCAPE子句自定义转义符:通过ESCAPE关键字声明一个特殊字符作为转义标识,将下划线转义为字面量。示例:
response = client.get_partitions(
    Expression="partition_name LIKE '%|_20231202%-%' ESCAPE '|'",
    # 其他必要参数...
)

这里|作为转义符,|_会被解析为实际的下划线字符。

  • 尝试替代匹配逻辑:

    • 如果分区名格式固定,直接使用精确匹配:Expression="partition_name = '_20231202-xxx'"(替换xxx为实际后缀内容)
    • 若Glue支持RLIKE正则匹配,用正则表达式精准匹配:Expression="partition_name RLIKE '^_20231202.*-'"
  • 验证分区名实际格式:确认目标分区的名称是否确实包含_20231202,排查是否存在多下划线、大小写差异或隐藏字符等情况。

  • 尝试参数化表达式(若支持):部分Boto3版本支持参数化查询,可避免手动转义的繁琐:

response = client.get_partitions(
    Expression="partition_name LIKE :pattern",
    ExpressionParameters={":pattern": "%_20231202%-%"},
    # 其他必要参数...
)

注意:需确认当前使用的Boto3版本及Glue服务是否支持ExpressionParameters参数。

内容的提问来源于stack exchange,提问作者shivam pandita

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 16:15:12