当前位置: 首页 > news >正文

百合怎么做网站厦门建设工程造价信息网

百合怎么做网站,厦门建设工程造价信息网,给公司网站设计,标智客logo在线设计生成器根据你描述的情况以及调试截图中的内容,我可以确认你的 sql 字符串在 Python 中由于转义字符的问题,可能导致在 Oracle 中运行时出错。 以下是一些排查和修改建议: 问题分析 转义字符问题: 在调试界面中可以看到,DEC…

根据你描述的情况以及调试截图中的内容,我可以确认你的 sql 字符串在 Python 中由于转义字符的问题,可能导致在 Oracle 中运行时出错。

以下是一些排查和修改建议:

问题分析

  1. 转义字符问题

    • 在调试界面中可以看到,DECODE(c.bin_flag, 1, '\\Pass\\', '\\Fail\\') 中多余的 \\ 是 Python 中的转义字符,可能在实际执行 SQL 时未被正确解析。
    • 在 Python 中,字符串中的 \ 本身需要通过 \\ 表示,但在 SQL 中不需要这种转义。
  2. ORA-00911 错误

    • Oracle 的 ORA-00911 通常指的是 SQL 语法问题,例如非法字符或未正确转义的符号。
    • 你当前 SQL 语句的拼接部分可能未正确处理这种问题,尤其是在 DECODEREGEXP_REPLACE 中的字符串内容。

修复建议

方法 1:使用原始字符串 r''

你可以将 SQL 中的字符串用 Python 的原始字符串方式表示,避免手动转义符号。改写如下:

sql = r"""SELECT a.*, b.bin_code, b.merge_count, b.first_count, b.rt_count, DECODE(c.bin_flag, 1, 'Pass', 'Fail') P_F ,REGEXP_REPLACE(ROUND(b.merge_count / die_tested * 100, 2), '^\.', '0.') || '%' Percent FROM (SELECT a.* FROM (SELECT t.*, ROW_NUMBER() OVER(PARTITION BY t.lot_id ORDER BY t.eda_load_time DESC) rn FROM SJTYS.ft_rawdata t WHERE t.lot_id = :lotid AND t.step LIKE 'ST%') a WHERE a.rn = 1) a LEFT JOIN SJTYS.ft_rawdata_bin_sum b ON a.id = b.id AND b.bin_type = 'H' LEFT JOIN SJTYS.ft_bdf_definition c ON a.bdf_file_name = c.bdf_file_name AND b.bin_code = c.bin_code AND b.bin_type = c.bin_type WHERE DECODE(c.bin_flag, 1, 'Pass', 'Fail') = 'Pass' ORDER BY b.bin_code"""

这里的改进:

  • 使用了原始字符串 r"""...""",避免手动转义引入的问题。
  • :lotid 替代了直接拼接 lotid 的方式(推荐使用参数化查询)。
方法 2:参数化查询

直接拼接字符串容易导致 SQL 注入风险。推荐使用参数化查询:

def Query_Info_First(prodid, lotid):connection = cx_Oracle.connect("user", "uerpwd", "ip:port/service")cursor = connection.cursor()sql = """SELECT a.*, b.bin_code, b.merge_count, b.first_count, b.rt_count, DECODE(c.bin_flag, 1, 'Pass', 'Fail') P_F ,REGEXP_REPLACE(ROUND(b.merge_count / die_tested * 100, 2), '^\.', '0.') || '%' Percent FROM (SELECT a.* FROM (SELECT t.*, ROW_NUMBER() OVER(PARTITION BY t.lot_id ORDER BY t.eda_load_time DESC) rn FROM SJTYS.ft_rawdata t WHERE t.lot_id = :lotid AND t.step LIKE 'ST%') a WHERE a.rn = 1) a LEFT JOIN SJTYS.ft_rawdata_bin_sum b ON a.id = b.id AND b.bin_type = 'H' LEFT JOIN SJTYS.ft_bdf_definition c ON a.bdf_file_name = c.bdf_file_name AND b.bin_code = c.bin_code AND b.bin_type = c.bin_type WHERE DECODE(c.bin_flag, 1, 'Pass', 'Fail') = 'Pass' ORDER BY b.bin_code"""cursor.execute(sql, lotid=lotid)MultiTable_INFO = cursor.fetchall()cursor.close()connection.close()return MultiTable_INFO

方法验证

建议你按照以下步骤调试:

  1. 将上面的方法替换到你的代码中,优先使用 方法 2(参数化查询)
  2. 检查是否仍有 ORA-00911 报错。如果仍有问题:
    • 打印 sql 字符串的最终值,确保语句和 Oracle 中运行的语句完全一致。
    • 手动在 Oracle 中再次运行以验证语法是否正确。

常见注意事项

  1. 转义字符问题

    • 避免在 SQL 中直接使用 Python 的 \ 转义字符,建议使用单引号 '' 或原始字符串。
  2. 字符串拼接

    • SQL 语句中直接拼接变量容易导致语法错误,使用参数化查询可以避免此类问题。
  3. Oracle 函数和字段名

    • 确保 SQL 中使用的字段名、表名等正确无误,尤其是别名、函数(如 REGEXP_REPLACE)是否支持。

请根据我的建议调整后测试!如果仍有问题,可以进一步提供更多信息。

http://www.yayakq.cn/news/750193/

相关文章:

  • 苏州h5网站建设价钱Wordpress背景图覆盖
  • 长沙专业网站建设北京建设网站的公司哪家好
  • 玉树电子商务网站建设多少钱龙岗教育在线官网
  • 怎样做简单的网站wordpress提交表单插件
  • 网站开发系统需求说明书wordpress怎样上传目录本
  • 江北区城乡建设部网站首页微信营销不属于下面哪种营销方式
  • 合肥模板网站建设费用网站seo做点提升流量
  • 镇江网站建设包括哪些做淘宝店头的网站
  • 说说刷赞网站推广甘肃省水利工程建设网站
  • dede怎么做音乐网站企业培训考试系统
  • dede网站婚纱模板沈阳网站优化建设
  • 昆明建设网站的公司大连市建设工程信息网官网
  • 帮朋友做网站不给钱iis7.5 配置网站
  • 深圳商业网站建设案例app优化建议
  • 建设银行企业版网站做阿里网站卖东西赚钱
  • 重庆市建设网站乡镇社区教育中心网站建设
  • 网站重复页面青岛市建设工程
  • 建筑钢结构网站seo优化推广工程师
  • 网站建设费一般多少钱沈阳建设工程信息网作废了吗
  • 网站蜘蛛来访纪录wordpress 主题依赖插件
  • wordpress如何设置网站描述南京建设网站排名
  • 做网站需要注意多少页网站可以随便创建么
  • 目前提供目录类搜索引擎的网站手机app播放器
  • 专业的手机价格网站建设苏州有哪些做网站公司好
  • 本溪市住房和城乡建设局网站网上做设计的网站有哪些
  • 建立网站的步骤是什么小程序源码是什么
  • 昆明企业制作网站佛山网页模板建站
  • 百度的合作网站有哪些广告网站建设网
  • 网站建设方案主要有营销型企业网站建设应遵守的原则
  • 杭州集团网站建设方案泰安百度推广代理公司