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

Python执行含CASE的SQL语句报错,SQL端正常运行求帮助

问题分析与解决

核心错误原因

  • execute方法传参错误:你把完整SQL拆成两个字符串传给cursor.execute,第二个字符串会被当作参数化查询的参数,而非SQL语句的一部分,导致CASE逻辑根本没被数据库解析执行。
  • SQL自身语法问题:
    • 引号嵌套混乱:cast("("created_date")") 写法完全错误,无需额外括号和嵌套引号,直接写cast(created_date as DATE)即可。
    • 字符串常量未加引号:Yes/No是字符串值,必须用单引号包裹,多余的括号也可以去掉。
    • 重复指定表:原代码里写了两次from analitics,属于语法错误。

修正后的代码

把完整的正确SQL作为单个字符串传入execute方法:

cursor.execute('''
SELECT DISTINCT 
    created_date,
    CASE WHEN CAST(created_date AS DATE) = CAST(NOW() AS DATE) THEN 'Yes' ELSE 'No' END AS is_today
FROM analitics
''')

额外说明

  • 用三引号'''编写多行SQL,既能避免单行字符串的引号冲突,也让SQL结构更清晰。
  • 给CASE语句的结果列起别名is_today,方便后续读取结果时对应字段。
  • 如果使用MySQL,CAST(NOW() AS DATE)可以简化为CURDATE(),效果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 16:06:25