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

Snowpark Python执行报错:NameError: name 'conn' is not defined 求助

问题排查与修复方案

核心错误原因

  • main函数调用getStruct(conn)时,conn变量从未在main作用域内定义,直接触发NameError。
  • getStruct函数定义了conn参数,但函数内部完全不需要该参数,反而重新赋值同名变量,造成逻辑冗余混乱。
  • getStruct函数未返回创建好的数据库连接,即使内部成功生成conn,外部也无法获取。
  • 日志初始化存在引用错误:导入whlib.utils.whliblogging as log,却使用logs.Logging调用,应为log.Logging。

修复后的完整代码

import snowflake.snowpark as snowpark
from snowflake.snowpark.functions import col

import wheel_loader

def getStruct(): 
    wheel_loader.load('whlib-0.0.1-py3-none-any.whl')
    
    from whlib.utils import connectionProperties as connProps
    from whlib.utils import connection as connection
    from whlib.utils import whliblogging as log
    from whlib.cln import entity as entity
    
    dbConnectionProperties = connProps.DbConnectionProperties()
    dbConnectionProperties.DBServer = 'xxxxxxxxxxx'
    dbConnectionProperties.DBUser = 'xxxxxxx'
    dbConnectionProperties.DBPword = 'xxxxxxxxxx'
    dbConnectionProperties.DBDatabase = 'xxxxxxxxxxxxxxxxx'

    connectionProperties = connProps.ConnectionProperties()
    connectionProperties.dbConnectionProperties = dbConnectionProperties
    
    # 修正日志初始化引用
    logger = log.Logging(connectionProperties)
    conn = connection.connect(connectionProperties, logger)
    
    # 返回创建好的连接对象
    return conn

def main(session: snowpark.Session):
    # 调用getStruct无需传参,获取返回的连接
    conn = getStruct()
    # 可根据需求返回对应结果,比如连接状态或后续处理数据
    return conn

关键修复点说明

  • 移除getStruct的conn参数,函数内部自行创建连接,无需外部传入。
  • 修正日志模块调用错误,匹配导入的别名log。
  • 在getStruct末尾添加return conn,将连接对象返回给调用者。
  • main函数中先调用getStruct()获取连接,避免使用未定义变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 05:42:47