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

如何将字符串形式的Python条件语句转换为SQL条件语句

Python条件字符串转SQL条件字符串方案

如果你的输入是规则简单的Python条件表达式(仅包含基础比较、布尔逻辑、空值判断,无复杂语法、嵌套函数),不需要引入重型依赖,基于规则替换就能快速实现需求,核心是优先匹配长运算符、用单词边界避免误替换标识符内容。

基础替换规则

按匹配优先级从高到低排列(长规则在前,避免短规则提前匹配破坏长语法):

  • is not None → IS NOT NULL
  • is None → IS NULL
  • != → <>
  • 逻辑关键字and/or/not → 全大写的AND/OR/NOT
  • 布尔值True/False → 全大写的TRUE/FALSE

最简实现代码

import re

def py_condition_to_sql(py_cond: str) -> str:
    rule_list = [
        (r"\bis not None\b", "IS NOT NULL"),
        (r"\bis None\b", "IS NULL"),
        (r"!=", "<>"),
        (r"\band\b", "AND"),
        (r"\bor\b", "OR"),
        (r"\bnot\b", "NOT"),
        (r"\bTrue\b", "TRUE"),
        (r"\bFalse\b", "FALSE"),
    ]
    sql_cond = py_cond
    for pattern, target in rule_list:
        sql_cond = re.sub(pattern, target, sql_cond)
    return sql_cond

测试示例:

print(py_condition_to_sql("variable1 != 0"))
# 输出:variable1 <> 0

注意事项

  • 上述实现用\b单词边界做匹配,不会把标识符里的关键字片段误替换,比如变量名and_flag不会被错误替换为AND_flag
  • 如果你的输入场景包含更复杂的Python语法,比如链式比较a < b < c、成员判断x in [1,2,3]、字符串字面量里包含运算符/关键字、自定义函数调用,简单正则替换会出现误判,此时建议用Python标准库ast解析条件字符串为抽象语法树,遍历节点映射生成SQL语法,鲁棒性更强
  • 安全提示:转换后的条件字符串不要直接拼接到SQL语句中执行,必须做语法校验,使用参数绑定传值,避免SQL注入风险

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 13:24:28