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

基于ADMEDP.EDM_REFERENCES表的REF字段精准查询问题求助

解决方案

核心修改点

  • 精准过滤REF字段:在SQL查询中添加REF LIKE '901-%'条件,匹配格式为901-yyyy的目标记录
  • 修正DOCNUMBER查询逻辑:单个值查询用=而非IN(IN用于多值批量匹配,单值场景会引发语法问题)
  • 完善空值安全处理:避免record为None时访问record[0]触发异常
  • 优化资源管理:使用with语句自动管理数据库连接与游标,无需手动调用close()

修改后的完整代码

def look_up():
    lookup_document = docnum_entry.get().upper()
    try:
        # with语句自动管理连接/游标,异常时也能保证资源释放
        with pyodbc.connect(conn_str) as conn:
            with conn.cursor() as cursor:
                # 添加REF过滤条件,修正DOCNUMBER查询方式
                cursor.execute(
                    "SELECT REF FROM ADMEDP.EDM_REFERENCES WHERE DOCNUMBER = ? AND REF LIKE '901-%'", 
                    lookup_document
                )
                record = cursor.fetchone()
                
                if record is None:
                    messagebox.showwarning(title="WARNING!!!", message="Cannot find 901- document!")
                    return  # 提前终止,避免后续错误执行
                
                print(record)
                webbrowser.open(f"http://.../{record[0]}")
    except pyodbc.Error as e:
        messagebox.showerror(title="Database Error", message=f"Query failed: {str(e)}")

关键说明

  • REF匹配规则:LIKE '901-%'严格匹配以901-开头的REF值,完全契合你给出的9xx-yyyy格式;若需匹配任意位置包含901的REF,可改为LIKE '%901%'
  • 异常捕获:新增数据库错误捕获,便于快速排查连接或查询故障
  • 空值判断前置:获取记录后立即校验空值,避免后续代码因record为None崩溃

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 06:59:59